Files
StudyDiary-20261009/60-Imports/64-AI/WordPress迁移后首页正常、内页404 Not Found(WPvivid迁移完成)完整排查方案.md
CrazyJasonwell e97be9ac8c commit all
2026-10-09 22:06:40 +08:00

6.1 KiB
Executable File
Raw Blame History

WordPress迁移后首页正常、内页404 Not Found(WPvivid迁移完成)完整排查方案

WordPress 迁移后首页正常、内页 404 Not Found(WPvivid 迁移完成)完整排查方案

核心现象总结

首页能打开、数据库 / 文件迁移成功;文章、页面链接访问 404,95% 场景是【伪静态(固定链接)+ 服务器环境不匹配】,其次是 Nginx/Apache 规则缺失、.htaccess 没迁移、权限问题。

一、优先最高概率方案(先试这个,大部分人直接解决)

方案 1:重新刷新 WordPress 固定链接(最常见!)

WPvivid 迁移数据库后,固定链接配置存入数据库,但新服务器不会自动重写 rewrite 规则缓存。

  1. 登录 WP 后台:设置 → 固定链接

  2. 不需要修改任何选项,直接拉到页面底部,点击【保存更改】

  3. 保存动作会自动刷新 WordPress 重写规则、重建 rewrite 缓存

  4. 清除网站缓存(WP 缓存插件、服务器缓存、浏览器 Ctrl+F5)测试内页

⚠️ 重点:哪怕你固定链接格式和旧站一模一样,必须点一次保存更改!


二、如果上面无效,区分你的服务器 Web 服务(Apache / Nginx)

情况 A:服务器是 Apache(宝塔 Apache、cPanel、虚拟主机大多是 Apache)

WordPress 伪静态依靠 .htaccess 文件

  1. 检查网站根目录是否存在 .htaccess

    • WPvivid 备份默认会打包.htaccess,但部分主机 / 压缩环境会忽略隐藏文件!
  2. 查看文件内容,标准 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. 两个关键检查: 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;
}

操作步骤(宝塔面板举例):

  1. 站点设置 → 配置文件

  2. 在server {}内部插入上面这段规则

  3. 保存,重载 Nginx 配置

  4. 再次去 WP 后台【固定链接】点保存更改

坑:很多人从 Apache 主机迁移到 Nginx,只迁移文件,忘记添加 Nginx 伪静态,直接 404!

三、WPvivid 迁移专属特殊问题排查(插件迁移特有 bug)

  1. 站点地址(URL)自动替换是否完整? WPvivid 迁移时有【替换域名】功能,如果替换不彻底会引发路由异常 后台 → 设置 → 常规 检查:
  • WordPress 地址(URL)

  • 站点地址(URL) 两个地址必须是新域名,不能残留旧域名

👉 修复方案(如果地址错乱): 方法 1:WPvivid 工具里再次执行【数据库搜索替换】,旧域名 → 新域名 方法 2:或者安装 Better Search Replace 全局清理数据库旧网址

注意:不要只改后台设置,数据库文章、选项表残留旧域名也会干扰 rewrite

  1. 子目录部署问题 旧网站如果是 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,临时全部禁用,测试内页。

五、最简排查顺序(照着一步步执行,效率最高)

  1. WP 后台【设置→固定链接】直接保存更改 ✅(第一步必做)

  2. 切换固定链接为朴素链接,判断是不是伪静态问题

  3. 判断服务器是 Apache 还是 Nginx:

    • Apache:检查.htaccess + mod_rewrite + AllowOverride All

    • Nginx:添加 wordpress 伪静态规则,重载服务

  4. 核对【WordPress 地址、站点地址】是否全部为新域名,清理数据库旧域名

  5. 清除全部缓存、CDN 缓存

  6. 全部插件临时禁用排除冲突

补充:宝塔用户高频踩坑提醒

  1. 宝塔 Nginx 站点,不要直接复制 Apache 的.htaccess 指望生效;

  2. 宝塔新建站点默认不会自带 WP 伪静态,需要手动添加或在【伪静态】选项框选择 WordPress;

  3. 迁移后如果开启了【防跨站】,部分环境偶尔干扰路径访问,可以临时关闭测试。

如果你告诉我两个信息,我可以直接给你对应可用的配置代码: ① 服务器环境:Apache / Nginx(是否宝塔面板) ② 当前固定链接使用的格式(例如 /% postname%/)

(注:部分内容可能由 AI 生成)