搜索全站
建站 9 分钟阅读

WordPress 所有文章页面 404,首页正常,固定链接重写规则修复

U
UFO_PF 2026-10-06 · 阅读 9 分钟 · 9 阅读
Wo 建站
阅读提示
本文约 3,525 字,预计阅读 9 分钟。文中命令与配置均经过实测,可直接参考执行。

一、故障现象:首页正常,文章和分类全部 404

一个非常典型的 WordPress 故障是:网站首页能正常打开,但点进任何一篇文章或分类,统统显示 404 Not Found。前台首页、后台都能进,唯独内容页进不去。

遇到这种情况,绝大多数时候并不是文章被删了,而是网站的”伪静态”(固定链接重写)规则失效了。WordPress 默认用类似 ?p=123 的带参数地址也能访问,但当你设置了”固定链接”(如 /%postname%/)后,网站需要依赖服务器层面的重写规则,把美观的网址映射回真实的 PHP 请求。一旦这套规则丢失或没生效,服务器找不到对应的物理文件,就会直接返回 404。

下面我们按”从最简单的操作到最彻底的配置”,逐步帮你把固定链接重写规则修好。

二、先做最简单的:重新保存一次固定链接

这看起来像是”重启试试”,但确实是最快、最常有效的办法。WordPress 在每次”保存固定链接设置”时,都会重新生成并刷新重写规则。很多规则失效的情况,只是保存一次就能恢复。

操作步骤:进入后台 设置 → 固定链接(Settings → Permalinks),什么都不用改,直接点击下方的保存更改按钮即可。

保存后,回前台刷新一篇文章页面看是否恢复正常。如果恢复了,问题就已经解决;如果仍 404,说明重写规则本身有更深的问题,继续看下面几步。

三、Apache 环境:检查并重建 .htaccess 文件

如果你的服务器用的是 Apache,重写规则存放在网站根目录的 .htaccess 文件里。文章 404,往往是这个文件丢失、被清空,或内容不对导致的。

用 FTP 或主机文件管理器查看网站根目录,找到 .htaccess(注意:它默认是隐藏文件,需要开启”显示隐藏文件”才能看到)。如果文件不存在,或在修改固定链接时没生成内容,可以手动创建并写入以下标准内容:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

保存后,再回到后台”固定链接”页面点一次保存,让 WordPress 重新写入规则。同时确认 Apache 已启用 mod_rewrite 模块(多数虚拟主机默认开启),并允许 .htaccess 覆盖配置(即 AllowOverride 不是 None)。

四、Nginx 环境:宝塔面板伪静态完整代码

Nginx 不读取 .htaccess,它的重写规则写在站点配置(vhost)里。很多用宝塔面板建站的站长,文章 404 就是因为站点没有启用 WordPress 的伪静态规则。

宝塔面板修复步骤:

  1. 进入宝塔面板 → 网站 → 找到你的站点 → 点击设置。
  2. 在”配置文件”或”伪静态”标签页,添加/确认以下 WordPress 标准规则。

宝塔 Nginx 下 WordPress 伪静态完整代码:

location / {
    try_files $uri $uri/ /index.php?$args;
}

如果是单站点 WordPress,上面这段放在 server 块内即可。保存后点击”重载配置”或”重载 Nginx”。

需要注意:宝塔默认的 try_files 规则通常已经能处理 WordPress 的固定链接。如果你之前手动改过配置、或从别处搬站导致规则丢失,就把上面这段标准规则补回去,再重载服务。重载后回到后台”固定链接”页再保存一次,确保规则同步。

五、权限问题导致伪静态不生效

即使规则写对了,如果文件或目录权限不对,服务器也可能无法正常执行重写,导致 404。

需要重点检查两处:

  • 网站根目录及上级目录的读执行权限:确保网站目录对运行用户(如 Nginx 的 www、Apache 的 apache)有读取和执行权限。常见标准是目录 755、文件 644,目录不能没有”执行”权限,否则服务器进不去目录,重写就无从谈起。
  • .htaccess 的读取权限(Apache 环境):确保该文件可被 Apache 用户读取,一般 644 即可,无需 777。

修改权限建议用主机文件管理器或 FTP 软件操作(可视化、不易出错),避免用命令行一条条改而漏掉目录。权限改好后,重新保存一次固定链接并刷新测试。

六、CDN、WAF 拦截重写导致 404

如果服务器本身规则正常,但网站套了 CDN 或开启了 Web 应用防火墙(WAF),也可能出现”规则在服务器端是对的,前端仍 404″的情况。

这是因为 CDN/WAF 在请求到达源站之前或之后,可能拦截、改写或丢弃了某些 URL,导致重写请求没有正确送达 WordPress。

排查方式:

  • 临时绕过 CDN 测试:用源站 IP 或关闭 CDN 加速后访问文章页,若恢复正常,说明问题出在 CDN 层,检查 CDN 的 URL 重写、缓存规则设置。
  • 检查 WAF 拦截日志:在 WAF 后台查看是否有对文章 URL 的拦截记录,把误拦截规则加白名单或关闭相关规则。
  • 确认 CDN 与源站的回源协议、回源路径配置正确,避免回源时把路径改坏。

七、自定义文章类型 CPT:用 flush_rewrite_rules 刷新规则

如果你用的是自定义文章类型(Custom Post Type,CPT,例如自定义的产品、案例、作品类型),404 往往是重写规则没有刷新导致的新 CPT 地址未被注册。这种情况在新增或修改 CPT 注册代码后特别常见。

原因:注册自定义文章类型时,WordPress 会把它的重写规则写入缓存;当规则过期或没更新,访问 CPT 的文章就 404。解决办法是强制刷新重写规则。

推荐方法(不写死代码、用完即删):

  1. 在主题的 functions.php 末尾临时加入:add_action('init', 'flush_rewrite_rules');
  2. 保存后,访问一次后台”固定链接”设置页并保存,规则即被刷新。
  3. 刷新完成后,务必删掉这行临时代码(不删会导致每次加载都刷新规则,拖慢网站)。

更稳妥的做法是:直接用后台”设置 → 固定链接 → 保存更改”,这个动作本身就包含刷新重写规则,对多数 CPT 404 都有效。若仍无效,再用上面的临时代码。

八、伪静态 404 排查清单(照着做)

把上面所有步骤整理成一份可照做的清单,遇到”首页正常、文章 404″时按顺序排查:

  1. 后台 设置 → 固定链接 → 直接点”保存更改”,刷新测试。
  2. 仍 404,检查根目录 .htaccess(Apache 环境)是否存在且内容正确,缺失就按标准模板重建。
  3. Nginx/宝塔环境,检查站点伪静态规则是否缺失,补上 try_files $uri $uri/ /index.php?$args; 并重载。
  4. 确认网站目录、文件权限正常(目录 755、文件 644)。
  5. 网站套了 CDN/WAF 的,临时绕过测试,并检查拦截日志与回源配置。
  6. 自定义文章类型 404,先保存固定链接刷新规则,必要时用 flush_rewrite_rules 临时刷新。
  7. 以上都没解决,再回头检查服务器日志(Nginx error_log / Apache error_log),看具体是哪个环节返回的 404。

写在最后

“首页能开、文章全 404″是 WordPress 伪静态故障的典型信号,几乎都出在重写规则这一层,和文章数据本身无关。按”先保存固定链接 → 检查 Apache .htaccess → 检查 Nginx/宝塔伪静态 → 核对权限 → 排查 CDN/WAF → 刷新 CPT 规则”的顺序走一遍,绝大多数情况下都能把 404 修复。先把这篇文章收藏起来,下次遇到,照着清单一步步来,你的网站很快就能恢复如常。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。