Files
StudyDiary/60-Imports/64-AI/WordPress迁移后首页正常、内页404 Not Found(WPvivid迁移完成)完整排查方案.md

176 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
<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
```
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 生成)