# 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 代码: ```apache # BEGIN WordPress 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] # END WordPress ``` 3. 两个关键检查: 1)主机是否开启 `mod_rewrite` 模块(很多新装 Apache 默认没开!) 2)网站目录权限允许`.htaccess`生效(AllowOverride All,宝塔站点配置里调整) > 常见坑:旧主机支持\.htaccess,新主机关闭了 AllowOverride,规则不执行 → 内页 404 > > ### 情况 B:服务器是 Nginx(宝塔 Nginx、阿里云、腾讯云服务器默认) **Nginx 不读取\.htaccess!这是高频踩坑点!** WPvivid 迁移过来的\.htaccess 完全无效,必须手动在站点配置添加 WP 伪静态规则。 #### 标准 WordPress Nginx 伪静态(永久链接非朴素格式使用) ```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 > > 2. 子目录部署问题 旧网站如果是 `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 生成)