解决宝塔面板Nginx引擎中WordPress无法调用模板的404.php的BUG

tencent promotion
原创作者: Fengjiajun

解决宝塔面板Nginx引擎中WordPress无法调用模板的404.php的BUG

在使用宝塔面板搭建 WordPress 网站,且 Web 引擎为 Nginx 的情况下,很多站长可能都会遇到一个令人头疼的问题:当访问一个不存在的页面时,会弹出 404 报错,但浏览器返回的是 Nginx 自带的 404 页面,而不是 WordPress 精心设计的 404.php 模板页面。这不仅影响用户体验,还可能削弱 SEO 效果。

本文将详细解析该问题的成因,并提供一个简单有效的解决方案。

🧩 问题分析:
问题出现的根本原因在于 Nginx 和 Apache 对于错误页面处理机制的不同:
Apache:使用 .htaccess 文件进行站点路由管理和错误页面定义,WordPress 安装时自动生成并解析 .htaccess 文件,因此可自动调用 404.php。
Nginx:不识别 .htaccess,所有重写规则、错误页面跳转等逻辑都需要在配置文件中手动定义。
这就意味着,如果在 Nginx 配置中强制指定了错误页面(例如:error_page 404 /404.html;),就会覆盖 WordPress 的路由逻辑,导致 Nginx 拦截了 404 错误并显示自己的静态页面,而不是交由 WordPress 处理。

✅ 解决方案
要解决这个问题,我们只需要 禁用 Nginx 配置文件中默认的 404 页面定义,让 WordPress 接管这类请求。
步骤如下:
打开宝塔面板,进入对应站点的 Nginx 配置文件。配置路径通常为:/www/server/panel/vhost/nginx/你的域名.conf,找到如下类似配置:error_page 404 /404.html;将这一行注释掉,即在前面添加 #:
#error_page 404 /404.html;
保存文件,并返回宝塔面板重启 Nginx 服务。

这个问题的根源在于 Nginx 的工作机制,需要手动干预其错误页处理逻辑。通过简单地注释掉 error_page 404 这一行,就可以让 WordPress 接管 404 请求,正确调用主题中的 404.php 模板。