WordPress 迁移到新服务器:插件方案与手动方案对比
先说结论:迁移不是「把文件复制过去」这么简单,真正容易出事的是数据库里的旧域名、序列化数据、文件权限三项。插件方案适合新手,手动方案适合大站和想搞清楚原理的人。下面两种都给你,附各自的坑。 一、迁移前必做:清点与备份 记录当前面板、PHP
先说结论:迁移不是「把文件复制过去」这么简单,真正容易出事的是数据库里的旧域名、序列化数据、文件权限三项。插件方案适合新手,手动方案适合大站和想搞清楚原理的人。下面两种都给你,附各自的坑。
一、迁移前必做:清点与备份
- 记录当前面板、PHP 版本、MySQL 版本(新服务器不能低)。
- 导出完整数据库(用 phpMyAdmin 或命令行
mysqldump)。 - 打包整个站点目录(含
wp-content)。 - 把两份备份存到本地或对象存储,别只放在旧服务器。
不要在这一步图快:90% 的迁移事故,都是「备份不全就先停站」。
二、方案 A:插件迁移(新手友好)
常用插件如 All-in-One WP Migration、Duplicator,流程大致一致:
- 旧站装插件 → 导出成一个包文件。
- 新站装好纯净 WordPress 与同一插件 → 导入包。
- 导入过程会自动替换域名、重建数据库。
- 完成后改
wp-config.php里的数据库信息(若插件没覆盖)。
优点:自动处理序列化数据,域名替换不会出错。
缺点(务必知道):
- 包体积有上限,大站(含大量图片)导入会失败,需要改 PHP 上传与执行时间限制。
- 部分免费版本不能直接导入大文件,要绕路。
- 导入后插件本身要删掉,否则占资源且有安全隐患。
三、方案 B:手动迁移(推荐,掌控感强)
1. 新服务器准备环境
装好 Nginx / Apache + PHP + MySQL,建库(字符集 utf8mb4),建好站点目录与数据库用户。
2. 上传文件
把旧站目录打包上传,解压到新站根目录。用 scp 或 rsync 比面板上传快得多,尤其图片多的时候:
rsync -avz --progress /旧站目录/ user@新服务器:/新站目录/
3. 导入数据库
mysql -u 用户名 -p 库名 < backup.sql
导入完检查表数量对不对。少了表通常是 SQL 文件被截断或单条语句太大。
4. 改 wp-config.php
define('DB_NAME', '新库名');
define('DB_USER', '新用户名');
define('DB_PASSWORD', '新密码');
define('DB_HOST', 'localhost');
5. 替换数据库里的旧域名(最容易出事的一步)
直接 SQL 替换有个致命问题:WordPress 的选项和部分插件字段是序列化存储的,字符串长度写在里面,直接替换会让长度对不上,整条数据读不出来 → 页面白屏或设置全部丢失。
正确做法:
- 用 WP-CLI:
wp search-replace 'old.com' 'new.com' --all-tables --precise(--precise会处理序列化)。 - 或用专业替换工具(如 Better Search Replace),它也会处理序列化。
- 不要用 phpMyAdmin 的「查找替换」直接干。
6. 处理固定链接与伪静态
Nginx 加规则(同站内文章已有详述):
location / {
try_files $uri $uri/ /index.php?$args;
}
然后到后台「设置 → 固定链接」直接点保存(不用改内容),让 WordPress 重写规则。
7. 文件权限
find /站点目录 -type d -exec chmod 755 {} \;
find /站点目录 -type f -exec chmod 644 {} \;
chmod 600 /站点目录/wp-config.php
漏了这步,会出现「能进后台但上传不了图片」「装插件要 FTP 密码」。
四、两种方案对比
| 维度 | 插件方案 | 手动方案 |
|---|---|---|
| 上手难度 | 低 | 中 |
| 大站支持 | 差(体积受限) | 好 |
| 域名替换 | 自动 | 需 WP-CLI 或工具 |
| 耗时(1G 站) | 30 分钟 | 20–40 分钟 |
| 残留清理 | 要手动删插件 | 无残留 |
| 可控性 | 低 | 高 |
建议:小于 500MB 的站用插件方案,省事;超过 1GB 或图片很多的站用手动方案,稳。
五、迁移后的检查清单
- 首页、文章页、分类页、搜索页各开一个,看是否 404。
- 登录后台,进「设置 → 常规」,确认两个 URL 都是新域名。
- 上传一张图片,确认能成功且能显示。
- 打开一篇文章,F12 看有没有混合内容(http 资源)。
- 全站搜索旧域名是否还有残留:
grep -r 'old.com' /站点目录。 - 更新站点地图并提交搜索资源平台。
- 观察 24–48 小时,旧站先别急着关,做好 301 跳转。
最后一句:迁移期间不要顺手升级 WordPress 或换主题。两件事分开做,出问题才知道是谁的锅。