🪐前言
你可能会遇到这些情况:现在的主机越来越慢想搬走;买了个更好的域名想把旧域名换掉;或者想给网站做个完整的备份副本。不管哪种,你面临的是同一个操作:把整个 WordPress 网站从一个地方完整地搬到另一个地方。
"迁移"这个词听起来吓人——数据库丢了怎么办?网站打不开怎么办?客户刚好在访问怎么办?这些担心很正常,但 WordPress 迁移的工具和流程已经非常成熟。只要按步骤走,一个完整的网站迁移可以在不影响正常访问的前提下完成。
这篇文章给你两套方案——Duplicator 和 All-in-One WP Migration,外加一种零停机切换的高级策略。不讲理论,每一步都是你可以在自己网站上直接操作的命令和配置。

一、迁移前的准备工作
不管你用哪种方案,这四件事必须做在迁移操作之前。
🔒 第一件事:在旧主机上做一次完整备份
迁移过程中什么事都可能发生——网络中断、磁盘满、文件权限被改——你手里必须有一个能随时恢复的完整备份。
用 UpdraftPlus(免费插件)或主机自带备份功能,把 数据库 + 所有文件(包括 wp-content、主题、插件、上传图片)完整备份到本地电脑。不要只备份到远程存储(Google Drive 之类),迁移期间网络可能不稳定,本地一份是最稳妥的。
📋 第二件事:记录当前环境的所有关键配置
新主机环境要跟旧环境尽量一致,这些信息你得提前记下来:
- PHP 版本(后台 → 工具 → 站点健康 → 信息 → 服务器)
- MySQL 版本
- 当前 PHP
memory_limit(在站点健康里都能看到) - 当前使用的 PHP 扩展列表(如果用了 Redis、Imagick 等特殊扩展,新主机也要装上)
- 当前域名和所有子域名的 DNS 记录(等会配置 DNS 要用)
🧹 第三件事:清理垃圾数据
迁移是清理的好时机。在旧网站上去做:
- 删除垃圾评论
- 删除文章/页面的修订版本(用 WP-Optimize 插件一键清理)
- 清空已删除文章/页面的回收站
- 删除不用的主题和插件
- 清理缓存
这些都算在迁移体积里。一个臃肿的网站打包出来可能有好几百 MB,清理完可能只需要几十 MB,迁移速度快得多。
📐 第四件事:确认新主机满足最低要求
到新主机的面板里确认:
- PHP 版本 >= 8.0(WordPress 6.x 推荐)
- MySQL >= 8.0 或 MariaDB >= 10.4
- 磁盘空间够放你当前网站体积的 3 倍(打包 + 解压 + 导入需要额外空间)
- 如果网站超过 500MB,确认新主机没有上传文件大小限制
二、方案一:Duplicator 完整迁移流程
Duplicator 是我最常用的迁移工具,免费版就够用。它的工作原理是:把整个网站打成两个文件(一个安装包 + 一个压缩存档),你拿到新主机上跑一个安装向导,五分钟搞定。
📦 第一步:在旧网站上创建迁移包
在旧网站后台安装并激活 Duplicator(免费版)。
进入 Duplicator > Packages > Create New。点击"Build"按钮,Duplicator 会先扫描你的网站——如果数据库大小或文件总大小有警告,点开看具体是什么问题。最常见的是"Archive Size"超过服务器限制,解决方法:
- 在 Archive 设置里排掉
/wp-content/backups/目录 - 排掉缓存目录(如
/wp-content/cache/) - 如果有大型 ZIP 文件在 uploads 里,选"File Filters"手动排掉
扫描通过后点击"Build",等待打包完成。完成后你会拿到两个文件:
installer.php(安装器)[日期时间]_[网站名].zip(完整网站压缩包)
两个都下载到本地电脑。
🏗️ 第二步:在新主机上部署
在新主机的面板里创建一个新的数据库——记录下数据库名、用户名、密码,等会要用。
用 FTP 或主机文件管理器把 installer.php 和 .zip 包上传到新主机的网站根目录(通常是 public_html)。
然后访问 https://新主机临时URL/installer.php(有些主机提供临时域名,域名还没解析过来之前先用这个)。
⚙️ 第三步:运行安装向导
Duplicator 安装向导分三步:
Step 1:环境检查。 它会检查 PHP 版本、目录权限、需要的 PHP 扩展是否齐全。全部 Pass 才能继续。如果有 Failed 项,截图给新主机客服,他们会帮你处理。
Step 2:数据库配置。 填刚才创建的数据库名、用户名、密码、主机地址(填 localhost,除非主机文档说不一样)。点击"Test Connection"确认连得上。
Step 3:更新 URL。 Duplicator 会自动检测新旧 URL 的差异并替换数据库中所有旧 URL。这里有一个关键操作:
Duplicator 的自动替换会覆盖文章中嵌入的图片链接、内部链接、序列化数据中的 URL。但小工具、主题设置里手动填的 URL 有时候替换不到。装完之后在每个页面和设置里快速扫一遍。
安装完成后,Duplicator 会自动删除 installer.php 和安装包文件。用新主机临时 URL 打开网站,确认首页、内页、后台都能正常访问。

三、方案二:All-in-One WP Migration 更轻量的选择
如果你网站比较小(500MB 以下),All-in-One WP Migration 是更快更简单的方案。一个按钮导出,一个按钮导入,不用手动上传 FTP。
📤 在旧网站导出
安装 All-in-One WP Migration 插件。进入 All-in-One WP Migration > Export。
点击"Export To" > "File"。插件会把整个网站(数据库 + 文件)打包成一个 .wpress 文件。等进度条走完,下载到本地。
⚠️ 免费版有 512MB 的导出文件大小限制。如果网站超过这个大小,需要买 Unlimited Extension(约 $69)或者用 Duplicator。别去网上找"破解版"——这种插件的"破解版"经常带后门,导出的时候就顺手把你的数据传到别人服务器上了。
📥 在新主机导入
在新主机安装 WordPress(全新安装,不需要导入任何示例内容)。装好之后安装 All-in-One WP Migration。
进入 All-in-One WP Migration > Import。上传刚才下载的 .wpress 文件。导入完成后插件会提示"即将覆盖当前数据库和文件"——确认,等几分钟。
导入完成后网站自动刷新。如果打不开,进入后台 → 设置 → 固定链接,重新保存一次。
🔄 两种方案怎么选
| 场景 | 推荐方案 |
|---|---|
| 网站 > 500MB | Duplicator(免费无大小限制) |
| 网站 < 500MB,想最简单 | All-in-One WP Migration |
| 换域名 + 换主机同时做 | Duplicator(URL 替换更完整) |
| 只需要克隆到本地测试 | All-in-One WP Migration(快) |
| 主机限制上传文件大小 | Duplicator(可用 FTP 上传,绕过限制) |
四、换域名的额外操作
如果迁移的同时还要换域名,Duplicator 的自动 URL 替换只是一个开始。下面这些地方也可能藏着旧域名,必须手动或批量替换。
🔗 必须手动检查替换的位置
后台 → 设置 → 常规:WordPress 地址(URL)和站点地址(URL),确认已经变成新域名。
后台 → 设置 → 固定链接:重新保存一次。
所有页面的内部链接:如果你在文章编辑器里手动填过指向旧域名的链接,Duplicator 替换时可能漏掉。用 Better Search Replace 插件(免费),搜索旧域名,替换为新域名。勾选所有数据库表,但先做一次"dry run"(模拟运行),确认匹配到的内容都是你想替换的,再执行真正的替换。
主题选项里的自定义 URL:用主题的自定义器检查一遍——logo 图片链接、Footer 里的版权链接、CTA 按钮的跳转地址。
Google Search Console 和 Google Analytics:把新域名加到 Search Console,做"地址变更"工具。GA 里的默认网址也更新一下。
📊 换域名后必做的收尾动作
// 1. 提交新域名的 sitemap 到 Google Search Console
// 2. 在 Search Console 使用"地址变更工具"通知 Google
// 3. 在旧域名上设置 301 全站重定向到新域名(参见第 49 篇文章)
// 4. 更新所有外部平台的链接(社交媒体、邮件签名、名片、B2B 平台)
// 5. 通知老客户"我们换域名了"
旧域名的 301 重定向至少要保留 6 个月。Google 重新索引需要时间,外链也需要时间更新。6 个月后检查 Search Console 确认旧域名的流量已经全部转移到新域名,再考虑让旧域名过期。
五、零停机切换:DNS 预解析 + TTL 降低策略
前面说的都是"先迁移、再切 DNS"的流程。这个过程中旧网站依然在旧主机上正常运行,迁移操作完全不影响访客。但有一步可能出现短暂空白:DNS 切换生效期间。
DNS 记录全球生效需要 0-48 小时(取决于 TTL)。这期间有些访客看到的是旧主机上的旧网站,有些看到的是新主机上的新网站。如果你的网站有订单系统,这期间的订单可能分别落在两个数据库中。
⏱️ 零停机切换操作步骤
提前 24 小时操作:降低 TTL。 到你域名 DNS 管理面板(Cloudflare、Namecheap 等),找到 A 记录的 TTL 值,从默认的 3600 秒(1 小时)或更高改为 300 秒(5 分钟)。等至少原 TTL 时间过去(如果原来是 1 小时,等 1 小时),确保全球 DNS 服务器都按 5 分钟刷新。
迁移完成并验证后:修改 A 记录指向新主机 IP。 TTL 只有 5 分钟,全球生效最多 5 分钟——这就是你唯一的切换窗口。这 5 分钟内新旧网站同时存在,如果有用户操作可能会有极少量订单落在旧站上。
切换后关键操作:
- 在旧主机的网站上显示一个维护提示,避免客户继续操作(但不要关停——DNS 还没完全切换的访客需要看到你的网站)
- 更好的做法是保持旧站运行但冻结数据库写入(禁用注册、评论、下单),这样 5 分钟后所有写入都在新站上
- 切换成功 24 小时后,把 TTL 改回 3600 秒(减少 DNS 查询压力)

六、迁移完成后的逐项验证清单
迁移成功不等于一切正常。按下面这个清单逐项检查——每项都要实际打开操作一遍,不要"看起来没问题"就跳过。
- [ ] 首页能正常打开,图片不缺失、不显示旧域名的路径
- [ ] 随机打开 5 篇文章/产品页面,检查图片、排版、链接
- [ ] 后台能正常登录
- [ ] 后台 → 工具 → 站点健康,全绿无警告
- [ ] 上传一张测试图片到媒体库,确认文件权限正常
- [ ] 安装一个新插件(然后删掉),确认文件系统可写
- [ ] 提交一个测试表单(Contact Form 7 / WPForms),确认能收到邮件
- [ ] 如果是 B2B 站,测试询盘表单是否正常发送
- [ ] 如果是电商站(WooCommerce):加购 → 下单 → 支付 → 确认订单号连续 —— 完整的测试订单
- [ ] 检查 SSL 证书是否在新主机上正确安装并自动续期
- [ ] 用 GTmetrix 或 PageSpeed Insights 跑一次速度测试,对比迁移前后的数据
- [ ] 用 Cron 检查工具(WP Crontrol 插件)确认定时任务正常注册
- [ ] 查一遍数据库:用 phpMyAdmin 打开
wp_options表,搜索siteurl和home,确认值是新域名(Duplicator 通常会处理好,但手动确认一下不花时间)
七、迁移常见失败原因与预防
这些年帮人迁移网站踩过的坑,浓缩成一张表:
| 失败现象 | 原因 | 预防方法 |
|---|---|---|
| 导入到一半报错 | 新主机 PHP 内存不够 | 迁移前在站点健康确认 memory_limit >= 256M |
| 安装器白屏/500 | 新主机 PHP 版本太低 | 迁移前确认 PHP >= 8.0 |
| 导入后图片全部 404 | 上传文件夹路径不同或权限不对 | 检查 uploads 目录权限为 755 |
| 导入后数据库报错 | 数据库字符集不匹配 | 新数据库创建时选 utf8mb4_general_ci |
| 打包时卡住不动 | 网站太大 + 服务器超时 | Duplicator 里分卷压缩(Package Settings > Archive > Split Archive) |
| 导入后 URL 没替换干净 | 序列化数据或主题选项里的 URL | 用 Better Search Replace 做一次全库替换 |
| 新站访问一直跳转旧域名 | wp-config.php 或数据库里残留旧 URL | 检查 wp-config.php 是否有硬编码的 WP_HOME / WP_SITEURL |
| 新主机拒绝上传大文件 | upload_max_filesize 限制 | 用 FTP 上传安装包绕过 HTTP 上传限制 |
| 迁移后网站变慢 | 新主机没有装页面缓存 | 安装 WP Rocket 或 LiteSpeed Cache 并配置 |
| 登录后自动跳转到旧域名 | 浏览器缓存了旧站的重定向 | 清浏览器缓存或用隐私窗口测试 |
总结
网站迁移的核心思路很简单:先在新主机上搭好一模一样的环境,再把数据搬过去,最后切 DNS 指过去。

- 📦 Duplicator 适合大站和复杂场景,两个文件打包,手动上传,安装向导自动替换 URL。
- 🚀 All-in-One WP Migration 适合小站,一键导出导入,不碰 FTP,但免费版有 512MB 限制。
- 🌐 换域名的最完整方案:Duplicator 自动替换 + Better Search Replace 全库替换 + 手动检查主题选项 + Search Console 地址变更 + 旧域名 301 半年。
- ⏱️ 零停机的关键操作:提前把 DNS TTL 降到 300 秒,切换窗口只有 5 分钟。
- ✅ 迁移后逐项验证:首页、后台、表单、邮件、订单、SSL 全部亲手测试一遍。
- 📋 备份是第一道防线:任何时候迁移,第一件事永远是备份。出了问题你能回退。
官方求助路径
- Duplicator 官方文档:https://duplicator.com/knowledge-base/ —— 从安装到故障排查覆盖所有场景
- WordPress 迁移官方指南:https://wordpress.org/documentation/article/moving-wordpress/
- All-in-One WP Migration 支持:https://help.servmask.com/ —— 常见导入失败问题的解决方案
- Google Search Console 地址变更工具:https://support.google.com/webmasters/answer/83106



那个验证清单里,用GTmetrix跑测试,迁移后速度反而变慢了咋整?
之前迁移完发现媒体库图片全挂了,原来是uploads路径没改,一个个手动改的,累死。
Duplicator扫描的时候一堆警告,看着就烦,其实都能忽略。
零停机那个操作,感觉跟变魔术一样,5分钟切换。
Better Search Replace确实好用,换域名必备。
旧站冻结写入,是不是可以装个WP Maintenance Mode插件,然后只允许管理员访问?