6.1 KiB
WordPress迁移后首页正常、内页404 Not Found(WPvivid迁移完成)完整排查方案
WordPress 迁移后首页正常、内页 404 Not Found(WPvivid 迁移完成)完整排查方案
核心现象总结
首页能打开、数据库 / 文件迁移成功;文章、页面链接访问 404,95% 场景是【伪静态(固定链接)+ 服务器环境不匹配】,其次是 Nginx/Apache 规则缺失、.htaccess 没迁移、权限问题。
一、优先最高概率方案(先试这个,大部分人直接解决)
方案 1:重新刷新 WordPress 固定链接(最常见!)
WPvivid 迁移数据库后,固定链接配置存入数据库,但新服务器不会自动重写 rewrite 规则缓存。
-
登录 WP 后台:设置 → 固定链接
-
不需要修改任何选项,直接拉到页面底部,点击【保存更改】
-
保存动作会自动刷新 WordPress 重写规则、重建 rewrite 缓存
-
清除网站缓存(WP 缓存插件、服务器缓存、浏览器 Ctrl+F5)测试内页
⚠️ 重点:哪怕你固定链接格式和旧站一模一样,必须点一次保存更改!
二、如果上面无效,区分你的服务器 Web 服务(Apache / Nginx)
情况 A:服务器是 Apache(宝塔 Apache、cPanel、虚拟主机大多是 Apache)
WordPress 伪静态依靠 .htaccess 文件
-
检查网站根目录是否存在
.htaccess- WPvivid 备份默认会打包.htaccess,但部分主机 / 压缩环境会忽略隐藏文件!
-
查看文件内容,标准 WordPress .htaccess 代码:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
- 两个关键检查:
1)主机是否开启
mod_rewrite模块(很多新装 Apache 默认没开!) 2)网站目录权限允许.htaccess生效(AllowOverride All,宝塔站点配置里调整)
常见坑:旧主机支持.htaccess,新主机关闭了 AllowOverride,规则不执行 → 内页 404
情况 B:服务器是 Nginx(宝塔 Nginx、阿里云、腾讯云服务器默认)
Nginx 不读取.htaccess!这是高频踩坑点! WPvivid 迁移过来的.htaccess 完全无效,必须手动在站点配置添加 WP 伪静态规则。
标准 WordPress Nginx 伪静态(永久链接非朴素格式使用)
location / {
try_files $uri $uri/ /index.php?$query_string;
}
操作步骤(宝塔面板举例):
-
站点设置 → 配置文件
-
在
server {}内部插入上面这段规则 -
保存,重载 Nginx 配置
-
再次去 WP 后台【固定链接】点保存更改
坑:很多人从 Apache 主机迁移到 Nginx,只迁移文件,忘记添加 Nginx 伪静态,直接 404!
三、WPvivid 迁移专属特殊问题排查(插件迁移特有 bug)
- 站点地址(URL)自动替换是否完整? WPvivid 迁移时有【替换域名】功能,如果替换不彻底会引发路由异常 后台 → 设置 → 常规 检查:
-
WordPress 地址(URL)
-
站点地址(URL) 两个地址必须是新域名,不能残留旧域名
👉 修复方案(如果地址错乱): 方法 1:WPvivid 工具里再次执行【数据库搜索替换】,旧域名 → 新域名 方法 2:或者安装 Better Search Replace 全局清理数据库旧网址
注意:不要只改后台设置,数据库文章、选项表残留旧域名也会干扰 rewrite
- 子目录部署问题
旧网站如果是
domain.com/blog,新站放在根目录;或者反过来,目录结构变化,固定链接、RewriteBase 不匹配直接 404。
四、进阶排查手段(上面无效再操作)
1. 测试固定链接格式定位问题
进入 设置→固定链接,临时切换为 朴素格式(?p=123)
-
如果朴素格式链接能正常打开: ✅ 证明:PHP、数据库、网站运行正常,纯粹是伪静态规则缺失 / 失效,聚焦上面 Apache/Nginx 规则修复
-
如果朴素格式依然 404: ❌ 不是伪静态问题!问题在文件路径、网站根目录、程序权限、Nginx/Apache 根目录配置错误
2. 文件权限检查
网站目录文件权限推荐:
-
文件夹:755
-
文件:644 若权限过严,服务器无法访问 PHP 文件,也会出现异常 404。
3. 关闭 CDN、缓存测试
新站点如果接入 CDN,缓存了错误 404 响应;先暂停 CDN,清除所有缓存(WP Rocket/W3 Total Cache、服务器 opcache)。
4. 禁用插件冲突测试
极少数情况:重定向插件(Redirection、Yoast SEO)、安全插件缓存了旧路由
重命名插件文件夹 wp-content/plugins → plugins.bak,临时全部禁用,测试内页。
五、最简排查顺序(照着一步步执行,效率最高)
-
WP 后台【设置→固定链接】直接保存更改 ✅(第一步必做)
-
切换固定链接为朴素链接,判断是不是伪静态问题
-
判断服务器是 Apache 还是 Nginx:
-
Apache:检查.htaccess + mod_rewrite + AllowOverride All
-
Nginx:添加 wordpress 伪静态规则,重载服务
-
-
核对【WordPress 地址、站点地址】是否全部为新域名,清理数据库旧域名
-
清除全部缓存、CDN 缓存
-
全部插件临时禁用排除冲突
补充:宝塔用户高频踩坑提醒
-
宝塔 Nginx 站点,不要直接复制 Apache 的.htaccess 指望生效;
-
宝塔新建站点默认不会自带 WP 伪静态,需要手动添加或在【伪静态】选项框选择 WordPress;
-
迁移后如果开启了【防跨站】,部分环境偶尔干扰路径访问,可以临时关闭测试。
如果你告诉我两个信息,我可以直接给你对应可用的配置代码: ① 服务器环境:Apache / Nginx(是否宝塔面板) ② 当前固定链接使用的格式(例如 /% postname%/)
(注:部分内容可能由 AI 生成)