Nginx配置问题:WordPress文章名模式固定链接无法加载返回404
Nginx配置问题:WordPress文章名模式固定链接无法加载返回404
嘿,我来帮你搞定这个WordPress固定链接404的问题!我看了你的Nginx配置,确实有几个小细节没处理好,导致文章名模式的链接没法正常解析。
问题根源
你的PHP请求处理块里,少了关键的参数传递——Nginx没把正确的文件路径信息告诉PHP-FPM,WordPress自然找不到对应的文章路由,直接返回404了。
修正后的完整配置
我已经帮你调整了配置,关键修改点都标出来了:
server { listen 80; server_name xyz.com www.example.com; root /db/docroot/www.example.com; index index.php; rewrite_log on; access_log /db/logs/host.access.log main; error_log /db/logs/example.debug.log debug; location / { # 删掉了重复的root和index,server级别的配置会自动继承到子location try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; # 核心修改:把正确的脚本路径传递给PHP-FPM,这是解决404的关键 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 额外补充:明确传递路径信息,确保WordPress能精准解析文章路由 fastcgi_param PATH_INFO $fastcgi_path_info; } }
关键修改说明
- 移除
location /里重复的root和index:server块已经定义了全局的根目录和默认索引,子location会自动继承,重复写纯属多余 - 添加
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;:默认的fastcgi_params文件通常没有这个参数,或者用了错误的变量,导致PHP-FPM找不到WordPress的入口文件,这才是404的元凶 - 补充
fastcgi_param PATH_INFO $fastcgi_path_info;:这能让WordPress准确识别固定链接里的文章路径部分,避免路由匹配错误
额外检查项(确保万无一失)
- 确认PHP-FPM服务在正常运行:可以用
systemctl status php-fpm命令查看状态,要是没运行就启动它:systemctl start php-fpm - 去WordPress后台重新保存一次固定链接设置:虽然Nginx不依赖
.htaccess,但保存操作会让WordPress更新内部的路由规则,避免缓存问题 - 检查目录权限:确保Nginx进程有读取
/db/docroot/www.example.com目录下所有文件的权限,不然也会导致访问失败
最后,修改完配置后记得重启Nginx让新配置生效:systemctl restart nginx
备注:内容来源于stack exchange,提问作者amanda
相关产品推荐
相关产品推荐

