前几天在帮老婆的外贸网站迁移服务,这个网站已经运营很久了,而且还是用的wordpress搭建的。似乎跟现代的技术有点格格不入。但是,老婆的想法是懒得去改了,可以换个好点的服务器。
于是乎,就有来接下来的事情了。WordPress 网站迁移后遇到首页和后台能正常访问,但其他页面全部返回 404 错误,这是一个非常常见的问题。
这种情况通常是由固定链接(Permalinks)设置失效引起的。
下面我按照排查顺序,分享完整的解决思路。
第一步:重置固定链接
这是最简单也是最常用的解决方案,往往就能直接解决问题。
- 登录 WordPress 后台
- 进入「设置 → 固定链接」
- 不用做任何修改,直接点击最下方的「保存更改」按钮
这一步会自动重写网站的 .htaccess(Apache)或 nginx.conf 规则,从而刷新伪静态规则。
第二步:检查服务器配置
根据你的服务器环境,需要检查不同的配置。这个外贸网站用的是nginx服务器,但是apache的配置这里也一起给下。
Apache 服务器
确保网站根目录下存在 .htaccess 文件,并且内容正确:
# BEGIN WordPress<IfModule mod_rewrite.c>RewriteEngine OnRewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]RewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]</IfModule># END WordPress同时确保:
- Apache 已启用
mod_rewrite模块 - 该站点的
AllowOverride指令设置为All,这样.htaccess文件才能生效
Nginx 服务器
Nginx 不支持 .htaccess,规则需要写在服务器配置文件中。打开你的站点 Nginx 配置文件(如 /etc/nginx/sites-available/your-site),在 server 块内确保包含以下核心规则:
location / { try_files $uri $uri/ /index.php$is_args$args;}保存后执行 sudo nginx -t 测试配置,确认无误后 sudo systemctl reload nginx 重启 Nginx。
第三步:检查 WordPress 站点地址设置
进入后台「设置 → 常规」,确认「WordPress 地址」和「站点地址」是否正确。这两个地址应该是你的新域名或新服务器 IP 地址,不能是旧的地址。
如果因为 404 无法进入后台修改,也可以通过数据库修改:
- 进入
wp_options表 - 找到
siteurl和home这两条记录 - 将其
option_value更新为你的新网站地址
第四步:检查文件权限
确保网站根目录的文件权限正确,特别是 index.php 和 .htaccess:
chmod 644 .htaccesschmod 644 index.phpchmod 755 wp-content第五步:禁用插件排查
有时插件冲突也会导致此问题,尤其是缓存或重定向插件。
- 通过 FTP/文件管理器,将
wp-content/plugins文件夹临时重命名为plugins-old - 此时所有插件被禁用,访问前台页面看是否正常
- 如果正常,再将文件夹名改回,并逐一启用插件以找出问题所在
第六步:数据库中的旧 URL 替换
如果迁移后域名或完整路径发生了变化,而数据库中某些内容还残留旧地址,也可能引发问题。
可以使用「Better Search Replace」插件,或直接在数据库执行 SQL 命令(务必先备份!),将旧的 URL 替换为新的。通常需要替换的旧 URL 格式为 http://old-domain.com,新 URL 为 https://new-domain.com。
解决方案优先级排序
- 重置固定链接(最常用,成功率最高)
- 检查服务器配置(尤其是 Nginx 用户)
- 检查站点地址设置
按照以上步骤排查,99% 的迁移后 404 问题都能得到解决。基本基本上到第二步就基本上解决问题了。