VPS建站
  • WordPress教程
  • 建站百科
  • 关于Nick
VPS建站
让每个人都有自己的网站
  1. 首页
  2. WordPress教程
  3. 正文

WordPress固定链接404的11种解决方法

2026年6月16日 77点热度 0人点赞 0条评论

固定链接 404 错误在WordPress建站中非常常见。明明在后台设好了的静态链接,一点击文章却直接跳转到了404 页面。这不仅影响访客体验,更会让搜索引擎认为页面被删除了,直接丢掉来之不易的排名。

为什么WordPress 固定链接会404?

WordPress 的固定链接功能之所以能生成不带问号的静态化 URL,完全依赖于一种叫做 URL 重写的技术。

简单来说,当访客访问一个类似 /hello-world/ 的地址时,Web 服务器并不是真的去寻找那个目录下的文件,而是根据内部规则把这个请求转交给 index.php,再由 WordPress 核心去解析并加载对应的文章。如果这个重写机制没有生效,服务器就会按照传统的文件查找方式去处理请求,找不到那个虚拟路径,页面就404了。

WordPress固定链接404错误产生原因示意图

根据 WordPress 官方文档的说明,固定链接的顺利工作至少需要两个条件:服务器支持重写模块,并且重写规则能够被正确读取或加载。在 Apache 环境下,这通常表现为 mod_rewrite 模块配合 .htaccess 文件;Nginx 则完全依靠配置文件中的 location 块;IIS 走的是 URL Rewrite 模块搭配 web.config。只要其中一个环节出了偏差,整个固定链接体系就会崩塌。

WordPress固定链接重写规则工作原理

方法一:启用 Apache 的 mod_rewrite 模块

在 Apache 服务器上,mod_rewrite 是 URL 重写的核心引擎,没有它,.htaccess 里写的那些规则就是一堆无效文本。很多 VPS 或独立主机在默认安装时可能没有启用这个模块,导致 WordPress 的固定链接直接失效。

要确认当前状态,可以通过 SSH 执行 httpd -M 或 apache2ctl -M 查看已加载模块列表,寻找 rewrite_module 这一行。如果没有出现,就需要手动启用。在基于 Debian 或 Ubuntu 的系统上,命令通常是 sudo a2enmod rewrite,然后 systemctl restart apache2 让改动生效。

对于 CentOS 或使用 httpd 的环境,则需要编辑主配置文件 /etc/httpd/conf/httpd.conf,找到 LoadModule rewrite_module modules/mod_rewrite.so 这一行并取消注释,保存后重启服务。

还有一个容易被忽略的细节:必须确保 Apache 的虚拟主机配置或主配置中,对网站根目录的 AllowOverride 设置至少为 All 或 FileInfo Options,否则 .htaccess 文件会被完全无视。完成这些操作后,再回到 WordPress 后台重新保存一次固定链接,通常就能立刻看到效果。

方法二:配置 Nginx 伪静态规则

Nginx 天生不支持 .htaccess 文件,这意味着所有重写规则都必须直接写在 server 块或单独的配置文件里。如果你是从 Apache 迁移过来的,直接把网站搬过来,却没有添加对应的伪静态规则,固定链接就会 404。

WordPress 官方文档推荐了一套标准的 Nginx 配置,核心是一个 location / 块,里面包含 try_files $uri $uri/ /index.php?$args; 这行指令。它的作用就是告诉 Nginx,当请求的 URI 不是一个真实文件或目录时,统一交给 index.php 处理,完美模拟了 Apache 的 mod_rewrite 行为。

实际配置时,需要在 /etc/nginx/sites-available/ 下找到对应站点的配置文件,在 server 段内插入这个 location 块,然后执行 nginx -t 测试语法并重载服务。还有一个经常被遗漏的地方是 location ~ \.php$ 块必须正确传递请求,确保 fastcgi_pass 指向 PHP-FPM 并包含 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;。如果这些规则缺失或顺序不对,即使主 location 配置正确,也可能出现部分页面 404 或下载 PHP 文件的情况。

方法三:配置 IIS 的 URL 重写规则

在 Windows 服务器上运行 WordPress 时,IIS 是默认的 Web 服务器,它使用 URL Rewrite 模块来处理固定链接。如果没有安装这个模块,或者 web.config 文件里缺少对应的规则,404 错误就会大面积出现。

解决的第一步是通过 Web 平台安装程序 或 Microsoft 官方下载中心 安装 URL Rewrite Module 2.0。安装完成后,在网站根目录下需要有一个正确的 web.config 文件。WordPress 在检测到 IIS 环境时,通常会自动生成这个文件,但如果它丢失或内容有误,可以手动创建一个。

标准配置中,<rewrite> 段内会包含一条规则,将几乎所有请求重写到 index.php,同时排除对实际文件和目录的匹配。具体来说,<match url="^(.*)$" ignoreCase="false" /> 配合条件 <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> 和 <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />,动作设置为 Rewrite,URL 为 index.php。保存后,在IIS 管理器中确认网站已应用该文件,再重新保存固定链接,问题一般就能解决。

方法四:修复 .htaccess 文件

即使 Apache 的 mod_rewrite 已经启用,.htaccess 文件本身的内容或权限出了问题,同样会导致 404。最常见的情况是文件内容被清空、被其他插件错误改写,或者文件权限设置过紧导致 Apache 无法读取。

WordPress 默认生成的 .htaccess 规则非常简单,对于大多数标准安装,它应该包含 # BEGIN WordPress 和 # END WordPress 之间的 RewriteEngine On、RewriteBase /、RewriteRule ^index\.php$ - [L] 以及 RewriteCond %{REQUEST_FILENAME} !-f 和 RewriteCond %{REQUEST_FILENAME} !-d 配合 RewriteRule . /index.php [L]。如果文件内容不完整或被篡改,可以直接通过 FTP 或 文件管理器 编辑,粘贴这段标准规则。文件权限通常建议设置为 644,所有者与 PHP 进程用户一致即可。

有时候,某些 安全插件 会主动修改 .htaccess 并添加额外规则,排查时可以暂时将这些新增行注释掉,再测试固定链接是否恢复。如果网站安装在子目录,还需要注意 RewriteBase 应该指向该子目录的路径,否则重写基准点错误也会引发 404。

方法五:通过 WordPress 后台重新保存固定链接

WordPress 内部维护着一套重写规则数组,它会在每次固定链接设置被保存时刷新,并尝试更新 .htaccess 或 web.config 文件,或者在 Nginx 环境下触发 flush_rewrite_rules() 函数。很多情况下,404 的出现仅仅是因为重写规则缓存没有及时更新,比如在迁移网站、更换域名或导入数据之后。

进入后台的设置 > 固定链接,不用做任何修改,直接保存,WordPress 就会重新生成规则并尝试写入服务器。

如果写入失败,页面顶部通常会给出提示,要求手动复制一段代码到对应文件中。这个方法几乎没有任何副作用,应该作为每次排查时的标准前置动作。如果保存后依然 404,说明问题不在规则刷新层面,而是更深层的服务器配置或冲突,此时再按顺序排查其他环节,效率会高很多。

方法六:禁用所有插件排查冲突

某些安全插件、缓存插件,甚至是 SEO 插件,都会出于自身功能需要,主动介入重写规则或修改请求处理流程。一旦它们生成的规则与 WordPress 核心规则发生冲突,或者错误地清除了必要的重写标记,404 就会随机出现。

排查的方法就是暂时禁用所有插件,然后检查固定链接是否恢复正常。

如果问题消失,再逐个启用插件,每启用一个就测试一次,直到找到问题插件。这个过程可以通过后台的批量操作完成,但如果连后台都因为 404 无法访问,就需要通过 FTP 或文件管理器将 /wp-content/plugins/ 目录临时重命名,比如改为 plugins-backup,这会强制停用所有插件。

找到问题插件后,可以联系开发者或寻找替代方案。很多时候,一个简单的插件更新就能解决这类冲突,因此保持插件处于最新版本也是预防 404 的好习惯。

方法七:切换至默认主题排查冲突

主题的 functions.php 文件拥有几乎与插件同等的权限,可以添加自定义重写规则、修改查询变量或调整模板加载逻辑。如果主题代码中存在不规范的 rewrite 规则声明,或者与固定链接结构发生冲突,就会导致部分或全部页面 404。

排查方法与插件类似,但更简单:直接切换到 WordPress 自带的默认主题,然后测试固定链接。如果问题立即消失,基本可以确定是原主题的代码有问题。

此时需要仔细检查 functions.php 中所有涉及 add_rewrite_rule、add_rewrite_endpoint 或 flush_rewrite_rules 的调用,特别是那些在 init 钩子上无条件执行刷新的代码,这种写法会在每次页面加载时重置重写规则,不仅影响性能,还可能在高并发下造成规则文件损坏。

找到问题代码后,可以将其修改为仅在主题激活时执行一次,或者使用更安全的条件判断,避免与 WordPress 核心机制产生冲突。

方法八:清除缓存插件和浏览器缓存

页面缓存插件如 WP Rocket、W3 Total Cache 或 LiteSpeed Cache,会将动态生成的页面保存为静态 HTML 文件,如果这些缓存是在固定链接出问题时生成的,那么即使你后来修复了服务器配置,访问到的依然是旧的 404 页面。因此,在完成任何修复操作后,必须彻底清除所有缓存,包括插件缓存、服务器端缓存以及 CDN 缓存。

具体操作通常在插件后台有一键清除按钮,或者通过 WP-CLI 执行 wp cache flush 命令。Chrome 或 Firefox 可能缓存了之前的 404 响应,导致你误以为修复无效。清除浏览器缓存或使用无痕模式测试,可以排除这个干扰。

方法九:检查 WordPress 地址和站点地址设置

这个看似基础的设置,实际上直接决定了 WordPress 生成固定链接时的基础 URL。如果后台设置中的 WordPress 地址和站点地址不一致,或者包含了错误的主机名、端口号,重写规则就可能指向错误的位置,导致 404。

常见的情况包括:迁移网站后域名变了但设置没更新,在负载均衡或反向代理环境下,实际访问的域名与站点地址不匹配,或者启用了 HTTPS 但站点地址还是 HTTP。

修正方法很简单,直接在这两个输入框中填入正确的、带协议的完整 URL,除非你有特殊需求将 WordPress 核心文件放在子目录,确保两者一致。

如果因为 404 无法进入后台,可以通过 phpMyAdmin 修改 wp_options 表中的 siteurl 和 home 选项值,或者使用 WP-CLI 的 wp option update home 和 wp option update siteurl 命令。如果你已经做了域名解析,也可以用这个万能登录地址www.domain.com/wp-login.php?loggedout=true,只需要替换你的域名即可。

修改完成后,再重新保存固定链接,让规则基于新的 URL 重新生成,通常能立即解决因地址不匹配引发的 404。

方法十:使用 WP-CLI 重置固定链接

当后台完全无法访问时,就只能用WP-CLI 这个命令行工具了。它允许你直接与 WordPress 核心交互,而不依赖任何网页界面。

重置固定链接的命令非常简单:wp rewrite flush。这个操作会刷新数据库中的重写规则缓存,效果与在后台点击“保存更改”完全一致,但绕过了 HTTP 请求,不受 404 影响。

对于 Apache 用户,WordPress 通常会在后续的普通页面请求中检测到规则需要更新,并尝试自动写入 .htaccess 文件。如果文件不可写,页面会提示错误,届时需要手动检查文件权限。在 Nginx 环境下,由于不依赖 .htaccess,flush 命令仅刷新数据库缓存,没有文件写入动作。

执行前需要确保 WP-CLI 已正确安装,并且当前目录在 WordPress 根目录下。如果服务器上没有安装,可以临时通过 curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar 下载 phar 包,然后用 php wp-cli.phar rewrite flush 执行。这个方法特别适合在自动化运维脚本中集成,比如在站点部署后自动执行一次,从源头避免固定链接 404。

方法十一:通过 phpMyAdmin 修改固定链接字段

如果其他方法都不起效,就只能直接操作数据库了。WordPress 将固定链接结构存储在 wp_options 表的 permalink_structure 字段中,这个字段的值就是你在后台选择的结构标签,比如 /%postname%/ 或者 /%year%/%monthnum%/%day%/%postname%/。当这个字段的值出现异常,或者重写规则缓存与实际结构不同步时,就会导致 404。

通过 phpMyAdmin 登录数据库,找到对应站点的 wp_options 表,浏览或搜索 option_name = permalink_structure 的行,检查其 option_value 是否为你期望的固定链接格式。如果为空,说明固定链接从未被正确保存,可以手动填入 /%postname%/ 或其他结构,然后清空 rewrite_rules 这个 option 的值(不要删除该行),让 WordPress 在下次加载时自动重建规则。修改完成后,访问网站任意页面,WordPress 会检测到规则缺失并重新生成。

这个方法虽然直接,但需要格外小心,操作前务必做好数据库备份,避免误改其他选项导致更严重的问题。

总结

解决 WordPress 固定链接 404 的过程,本质上是一次对网站底层运行机制的深度梳理。从服务器模块到配置文件,从主题插件到数据库字段,每一个环节都可能在关键时刻掉链子。但一旦理清了这条链路,修复起来往往只需要几分钟。

而对于刚接触服务器的用户,遇到 404 也不必慌张,按照本文的顺序逐项排查,绝大多数情况都能迎刃而解。

标签: 暂无
最后更新:2026年6月16日

Nick

多年网站运营经验,希望能帮到你

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
VPS
文章目录
  • 为什么WordPress 固定链接会404?
  • 方法一:启用 Apache 的 mod_rewrite 模块
  • 方法二:配置 Nginx 伪静态规则
  • 方法三:配置 IIS 的 URL 重写规则
  • 方法四:修复 .htaccess 文件
  • 方法五:通过 WordPress 后台重新保存固定链接
  • 方法六:禁用所有插件排查冲突
  • 方法七:切换至默认主题排查冲突
  • 方法八:清除缓存插件和浏览器缓存
  • 方法九:检查 WordPress 地址和站点地址设置
  • 方法十:使用 WP-CLI 重置固定链接
  • 方法十一:通过 phpMyAdmin 修改固定链接字段
  • 总结

分类

  • WordPress教程
  • 建站百科