搜索全站
常规配置 7 分钟阅读

WordPress 固定链接改了文章404怎么办?伪静态规则配置

改完固定链接后文章和分类页集体变成404打不开?本文讲清服务器伪静态规则缺失为什么会让 WordPress 文章和页面全部404,并分别给出 Nginx 与 Apache 可直接复制的伪静态配置代码,手把手教你快速恢复前台正常访问,不用重装也不用动数据库。

U
UFO_PF 2026-10-10 · 阅读 7 分钟
Wo 常规配置
阅读提示
本文约 2,780 字,预计阅读 7 分钟。文中命令与配置均经过实测,可直接参考执行。

引言

很多站长在 WordPress 后台把固定链接从默认的「朴素」形式改成「文章名」或自定义结构后,前台文章、分类、标签页会集体变成 404「找不到页面」,但首页却还能正常打开。这通常不是文章被删除了,而是服务器没有正确识别 WordPress 的伪静态(重写)规则——所有形如 /hello-world/ 的地址被服务器当成不存在的物理目录去查找,找不到真实文件就直接返回 404。尤其是从 Apache 换到 Nginx、或者更换主机商、迁移站点之后,这个问题几乎必然出现。很多人都以为是数据出了问题,急着重装或者导数据库,结果越弄越乱。其实只要把伪静态这一环补上,文章就能立刻恢复。本文把背后的原因和 Nginx、Apache 两套环境的配置方法一次性讲清楚,照着操作基本都能解决。

故障原因分析

  1. 服务器缺少重写模块或模块未开启。Apache 依赖 mod_rewrite 模块,Nginx 需要在编译时带上 rewrite 模块(绝大多数发行版自带),缺少时伪静态规则根本无法生效,前台只会看到干巴巴的 404。
  2. 根目录没有 .htaccess,或者规则被覆盖。固定链接依赖根目录的 .htaccess 把 /post-name/ 转发给 index.php?p=xx,文件不存在、内容为空,或被主题、插件覆写,都会导致 404。
  3. Nginx 默认不读取 .htaccess。Nginx 环境必须把重写规则写进站点配置文件的 server 段里,很多站长照抄 Apache 教程,结果规则形同虚设,白忙一场。
  4. 站点地址与实际访问域名不一致。修改域名后没有同步更新 WordPress 地址和站点地址,重写生成的链接仍指向旧域名,访问后自然 404。
  5. AllowOverride 被设为 None。Apache 主配置里禁止了 .htaccess 生效,即使文件里写了规则也不起作用,这是 VPS 自建环境的常见坑。
  6. 缓存或 CDN 保存了旧的 404 结果。有时规则其实已经修好了,但浏览器或 CDN 仍在返回缓存的错误页,让人误以为没生效。

分步解决方案

方法一:先重新保存一次固定链接。 进入「后台 → 设置 → 固定链接」,不做任何修改直接点「保存更改」。这一步会触发 WordPress 重新生成 rewrite_rules 并尝试写入 .htaccess,在目录权限正常的环境里,仅此一步就能恢复大半问题,也是最省事的排查起点。

方法二:Apache 环境配置文件。 在网站根目录(与 wp-config.php 同级)新建或编辑 .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

这几行的意思是:当请求的文件或目录不存在时,统统交给 index.php 处理,这正是 WordPress 路由能工作的前提。如果是子目录安装,把 RewriteBase / 改成 RewriteBase /子目录名/。同时确认 Apache 主配置(httpd.conf 或站点 conf)中允许读取:

<Directory /var/www/html>
    AllowOverride All
    Require all granted
</Directory>

方法三:Nginx 环境配置伪静态。 Nginx 不读 .htaccess,需要在站点配置的 server {} 中加入:

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

若 WordPress 装在子目录 /blog,则写成:

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

改完先执行 nginx -t 检查语法,再用 nginx -s reload 重载配置,避免语法错误让整个站点宕机。

方法四:宝塔面板 / 虚拟主机面板用户。 宝塔面板进入「网站 → 设置 → 伪静态」,选择「wordpress」模板后保存;虚拟主机通常在控制面板里提供「伪静态」开关,选 WordPress 即可,也可以直接粘贴上面的规则,无需手工编辑配置文件。

方法五:核对站点地址。 后台「设置 → 常规」中确认 WordPress 地址和站点地址都是当前域名(带正确的 http/https)。若后台已经进不去,可临时在 wp-config.php 中强制指定:

define('WP_HOME', 'https://www.example.com');
define('WP_SITEURL', 'https://www.example.com');

方法六:恢复后清理缓存验证。 规则配好后,用无痕窗口访问几篇不同的文章、分类页和标签页,确认全部返回 200。若有 CDN,记得刷新 CDN 缓存,避免仍看到旧的 404 页面。

常见踩坑点

  1. 只改了后台固定链接,没检查服务器伪静态,以为保存一下就会自动生效。
  2. Nginx 服务器上照抄 .htaccess 文件,规则完全不起作用。
  3. 子目录安装时 RewriteBase 写成 /,导致链接漏掉子目录前缀。
  4. .htaccess 文件属主或权限错误,Apache 进程读不到,规则依然失效。
  5. 套了 CDN 或反向代理后,回源时 Host 不对,重写条件判断出错。
  6. 开了「强制 HTTPS」但 SSL 证书没配好,跳转被打断,浏览器显示成 404 或无法访问。
  7. 修改后没清理浏览器缓存,被旧的 404 结果误导,反复怀疑配置没生效。

总结

固定链接修改后出现 404,核心原因十有八九是伪静态规则没配对,而不是文章数据丢失。排查顺序建议是:先重新保存一次固定链接,再确认服务器环境到底是 Apache 还是 Nginx,分别写好对应的重写规则,最后核对站点地址是否一致,并检查是否有缓存或 CDN 干扰。整个过程并不复杂,关键是别急着动数据库、别急着重装。把这几步按顺序做完,WordPress 固定链接 404 的问题基本都能定位并解决,恢复后清理一次浏览器和站点缓存再逐页刷新验证即可。

U
UFO_PF作者

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

留下你的想法

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