宝塔面板 WordPress 伪静态的一个小坑
作为某些知名站长说的使用宝塔面板的小白,在使用面板的时候就遇到了一个小坑
不能说是坑吧,也不是面板的问题,只是一个普遍存在的问题
常见的 WordPress 伪静态都是这样子的:
location / {
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
宝塔面板的 WordPress 伪静态多了一点东西:
index index.html index.php;
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
这个 index 有什么用,就是一个优先级的东西,表示 index.html 比 index.php 的优先级高一点,如果两个页面同时存在,就会优先展示 index.html 页面
接着看宝塔站点管理中的默认文档是这样的:
index.php
index.html
index.htm
default.php
default.htm
default.html
然后查看配置文件中的 server 也是这样子的
index index.php index.html index.htm default.php default.htm default.html;
看着 index.php 的优先级比 index.html 高,但是在网站目录新建一个 index.html,会发现依旧会显示 index.html 的内容
没仔细看,以为是宝塔的问题,结果是我错了,笛声大大一语点破梦中人,看一下你的伪静态
发现居然还有一个 index 在,而且 index.html 在前面,修改了以后就正常了
同时优化一下伪静态设置,笛声大大发了一篇文章说过,之前默认的伪静态通过加载外置的 PCRE 规则来实现的,外置的东西,效率肯定不高
有一种通过核心模块里面的 try_files 指令来实现的伪静态,而且只需要一行配置代码
location / {
try_files $uri $uri/ /index.php?$args;
}
就这样,直接替换掉宝塔默认的伪静态,一点多余的都不需要