直接用 try_files 替换 if + rewrite 是解决 WordPress 内页 404 最稳定推荐方式;标准配置为 location / { try_files $uri $uri/ /index.php?$args; },需同步检查 index.php 存在性、避免 php location 截断、执行 nginx -t && nginx -s reload,并确认 PHP 8.4 的 fastcgi_param 完整性。

直接用 try_files 替换旧式 if + rewrite 规则,是解决 WordPress 内页 404 最稳定、最推荐的方式。它不依赖条件判断,执行效率高,且与 PHP 8.4 及新版 Nginx 兼容性更好。
标准 location 配置写法
在站点 Nginx 配置文件的 server 块内,找到或添加如下 location / 段落:
location / { try_files $uri $uri/ /index.php?$args; }- 若需支持
/wp-admin无尾斜杠访问,额外加一行独立重定向规则:rewrite ^/wp-admin$ $scheme://$host$uri/ permanent;
必须同步检查的三项细节
只改 try_files 不够,以下三点缺一不可:
需要创建、读取、编辑或处理 Word 文档(.docx / .dotx)时使用。触发词:'Word'、'word 文档'、'.docx'、'生成报告'、'制作合同/简历/方案/说明书'、'提取 word 内容'、'在文档里查找替换'、'给文档加页眉页脚/目录/表格'。也用于把任意内容排版成一份正式的 Word 文件。不要用它处理 PDF、Excel 或无关编程任务。中文创作场景尤其适合:小说大纲稿、投稿文档、合同、简历、工作总结。
- 确认
index.php文件真实存在于网站根目录,且权限为644 - 确保配置中没有其他
location ~ \.php$块提前截断请求(该块应仅负责 PHP 解析,不参与 URL 路由) - 修改后必须执行
nginx -t && nginx -s reload,不能仅靠宝塔“保存”按钮触发
PHP 8.4 用户特别注意
升级到 PHP 8.4 后,try_files 本身仍有效,但需验证 fastcgi 参数是否完整传递:
- 打开
/www/server/nginx/conf/enable-php-84.conf - 确认其中包含:
fastcgi_param QUERY_STRING $query_string;fastcgi_param PATH_INFO $fastcgi_path_info; - 若缺失或拼写错误(如写成
$path_info),会导致$_GET或路由解析失败,间接引发 404
为什么 try_files 能稳定解决 404
Nginx 的 if 指令在重写逻辑中容易引发循环或被跳过,尤其当请求路径含中文、短链接(如 /p/123)或 wp-admin 子目录时。try_files 是原子级匹配:按顺序检查 $uri 是否为真实文件、是否为真实目录,都不存在就直接交由 /index.php 处理,确保所有动态请求都落到 WordPress 入口,避免漏判。










