Typecho 伪静态规则去掉链接中的 index.php
前言
typecho 默认的文章访问链接一般是这样的
https://www.jerryyang.link/index.php/archives/6/
链接有这个 index.php
感觉很不美观,而且对于搜索引擎的收录也有影响
解决
本文基于 1panel 面板、typecho1.2.1、OpenResty 和 Matcha 主题
首先我们打开站点域名的伪静态配置
添加下面的伪静态配置,就可以实现重写到新的 URL 格式,并且之前带有 index.php
的链接也会 301 重定向到新的格式上👍
# 根目录的定位块
location / {
try_files $uri $uri/ /index.php?$query_string;
# 尝试寻找与URI匹配的文件或文件夹,如果没有找到,则将请求传递给带有原始查询字符串的index.php页面
}
# 处理以/index.php结尾的请求的定位块
location ~ ^/index\.php$ {
if ($args ~* "archives\/(.*)") {
return 301 $scheme://$host/archives/$1;
# 将参数中包含"archives/(*)"的请求重定向到新的URL格式:
# $scheme://$host/archives/$1(使用捕获的组)
}
return 404;
# 对于其他以/index.php结尾的请求,返回404错误
}
# 404错误页面的配置
error_page 404 /typecho/index.php?$query_string;
# 显示位于/typecho/index.php的错误页面,并将原始查询字符串作为参数传递
然后打开 typecho 站点的后台,设置“永久链接”选项为第一项(自选)
在保存时可能会出现“重写功能检测失败, 请检查你的服务器设置”的报错,由于我们刚刚已经配置了伪静态,直接强制启用即可
之后就可以清除服务器缓存和浏览器缓存测试了