176 lines
6.1 KiB
Markdown
176 lines
6.1 KiB
Markdown
# 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 生成)
|