解决NGINX的WORDPRESS伪静态规则失效的问题

前两天搬到了日本的樱花VPS上,用上了最新的WDCP2.5管理面板,支持多用户管理(我们几个合租的VPS,最需要这个功能了),感觉很不错,屁颠屁颠的把网站搬过来了,然后设计wordpress伪静态规则。我还是使用的是WDCP1.0时代的wordpress伪静态规则

try_files $uri $uri/ /index.php?q=$request_uri;

结果重启nginx,还是显示404。这就让我纠结了。后来我有测试一个网上最普遍的

try_files $uri $uri/ /index.php?q=$uri&$args;

结果还是失效,急的我像是热过上的蚂蚁啊,又在网上陆续找了一些伪静态规则,没一个成功了。重启服务器重启了N次。
黄天不负有心人,最后终于让我找到了一条可以用的:

1
2
3
4
5
6
rewrite ^.*/files/(.*)$ /wp-includes/ms-files.php?file=$1 last;
if (!-e $request_filename) {
rewrite ^.+?(/wp-.*) $1 last;
rewrite ^.+?(/.*.php)$ $1 last;
rewrite ^ /index.php last;
}

根据这条规则发明人的解释,第一条规则

1
try_files $uri $uri/ /index.php?q=$request_uri;

会让所有的找不到的目录和文件跳转到index.php处理,很有可能是我的index.php权限问题或者其他原因导致不能将伪静态地址映射到真实地址中去。所以才会出现这个纠结的问题。
(特别注意:伪静态规则文件必须是.conf格式,并且文件里没有多余字符,结尾多一个空格都会出问题!)

解决NGINX的WORDPRESS伪静态规则失效的问题

https://www.ftium4.com/a-problem-of-wordpress-rewrite-in-nginx.html

作者

龙爪槐守望者

发布于

2014-04-09

更新于

2021-06-06

许可协议

评论