作为某些知名站长说的使用宝塔面板的小白,在使用面板的时候就遇到了一个小坑

不能说是坑吧,也不是面板的问题,只是一个普遍存在的问题

常见的 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;
}