在宝塔面板面板5.9到6.8版本中,默认内置 wordpress规则已被调整。如果您的面板规则从未更改过,则可以重新更新默认的伪静态规则。为什么我需要调整,因为这些版本中的默认伪静态规则不正确并且已在最新版本中进行了修改。据估计,很多人都没有注意到这个问题。在本文中,我们正在讨论这个问题。
一:默认的规则
让我们看一下6.9之前版本中的默认wordpress伪静态规则:
-
location / {
-
index index.html index.php;
-
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;
-
}
-
}
-
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
我们中的许多人都选择了这个默认的伪静态规则来完成它。实际上,这个规则仍然是错误的,我们可以分析一下,这条规则首先调整索引顺序,在index.php之前放入index.html。我们知道WordPress的入口文件是index.php,所以这个规则显然是错误的。我们来看看这个默认规则的含义。
如果有一个index.html文件,它会终止新生成的链接的匹配,而不是执行规则(因为wordpress没有index.html文件,没有匹配,所以这句话不是必需的。)如果有是index.php继续匹配索引。 Php,如果index.php不存在,匹配index.php并隐藏index.php文件,所以即使我们输入www.daniao.org/index.php,它也会自动成为www.daniao.org的形式。
这个规则是错误的,非常奇怪,当然,它是源的来源,源码在这里,每个人都有兴趣自己看看:https://wayne173.iteye.com/blog/1913862这条规则不值得wordpress在高层,我们来看看官方WordPress文档是如何编写的。
二:Wordpress CP
让我们来看看官方的WordPress文档和官方的Nginx文档,如下所示:
-
location / {
-
# This is cool because no php is touched for static content.
-
# include the "?$args" part so non-default permalinks doesn't break when using query string
-
try_files $uri $uri/ /index.php?$args;
-
}
-
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
看,它太短了,还有两行评论,也就是说,规则实际上只有两行!让我们来看看这两行评论是什么:
#这个规则很酷,因为静态内容根本不会触及PHP
#include"?$ args"目标是即使使用非默认永久链接,也不会使用查询字段时来破坏它。
所以正确的wodpress规则是:
-
location /
-
{
-
try_files $uri $uri/ /index.php?$args;
-
}
-
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
宝塔面板已经默认更改过了,我们看图:
三:总结
5.9 版本是没人管的,所以看到的人也赶紧更新下自己的 wordpress 伪静态规则。当然 wordpress 官方自己给的规则还是很给力和高效的而且还兼顾了安全性!如果是 6.X 的可以升级到最新版本,之后,自己更换下默认的伪静态规则就可以了,如果是 5.9 版本的,可以复制这个最新的规则到自己的默认的 wodpress 伪静态文件里面,之后保存就可。如果不在意以前的也可以用,如果强迫症可以换新的了。