如何在WordPress中使用All-in-One WP Migration:完整技术指南
All-in-One WP Migration 是一款 WordPress 插件,它将您的整个网站——数据库、媒体上传、主题、插件和核心配置——序列化为单个可移植的 .wpress 归档文件,然后可以导入到任何 WordPress 安装中,无需手动操作数据库。它是完整网站迁移或时间点备份的最快途径,无需接触 phpMyAdmin、SSH 或原始 SQL 转储。
本指南超越了基本的点击操作。它涵盖了完整的迁移工作流程、导致大多数导入失败的关键技术限制、PHP 配置调优、URL 序列化行为,以及通常被跳过并在后来导致生产事故的迁移后验证步骤。
插件底层实际运行机制
在接触仪表板之前,了解插件的内部机制可以防止大型迁移过程中出现意外。
当您触发导出时,All-in-One WP Migration 执行以下操作序列:
- 将 WordPress MySQL 数据库转储为临时工作目录中的纯 SQL 文件。
- 序列化数据库中的所有 PHP 对象数据(选项、小部件配置、文章元数据),并将绝对 URL 重写为占位符令牌,以便在导入时重写。
- 将
wp-content/uploads、活动主题文件和插件目录与 SQL 转储一起打包。 - 将所有内容包装成
.wpress归档文件,这是一种自定义格式——不是标准的 ZIP 或 TAR——具有自己的清单头。
导入时,过程相反:归档文件被解包,SQL 在新数据库上重放,URL 占位符令牌被替换为新站点 URL。这个 URL 重写步骤是插件能够优雅处理域名更改而无需单独进行 wp-cli search-replace 操作的原因——尽管您仍应验证它,如迁移后部分所述。
第 1 步:在源站点上安装插件
登录到您现有的 WordPress 仪表板,导航到插件 > 添加新插件。搜索 All-in-One WP Migration,安装并激活它。免费版本适用于低于服务器上传大小阈值的站点(通常为 128 MB 到 512 MB,具体取决于主机的 PHP 配置)。
激活后无需任何配置。插件会立即在左侧边栏中注册自身。
第 2 步:导出您的网站
在仪表板侧边栏中导航到 All-in-One WP Migration > 导出。
点击导出到并选择文件。插件将开始打包您的站点。对于 500 MB 以下的典型站点,这需要 30 秒到 3 分钟。对于拥有大型媒体库的多 GB 站点,请预计需要 10 到 20 分钟。
导出中包含的内容:
- 完整的 MySQL 数据库转储(所有带有配置前缀的表)
wp-content/uploads目录wp-content/themes中的活动和非活动主题wp-content/plugins中的所有已安装插件wp-config.php出于安全原因被有意排除——目标站点自己的wp-config.php在导入时会被保留
默认排除的内容:
- 垃圾评论
- 文章修订版本
- 未使用的主题和已停用的插件(可通过高级选项切换进行配置)
- 错误日志和缓存目录
高级选项部分允许您排除特定表、文件路径或文章类型。在导出前使用此功能清除瞬态缓存或大型日志表,可以显著减小归档文件大小。
打包完成后,点击下载将 .wpress 文件保存到本地。将其存储在可靠的位置——此文件是您完整的站点备份。
第 3 步:准备目标环境
如果您要迁移到新服务器,在导入之前需要在目标位置安装一个干净的 WordPress。大多数托管环境提供一键式 WordPress 安装程序。如果您在 VPS 主机环境中工作,可以手动安装 WordPress 或使用控制面板套件。
目标 WordPress 安装不需要在主题、插件或内容方面与源站点匹配——导入将覆盖所有内容。但是,以下内容必须到位:
- WordPress 核心已安装并可通过其管理仪表板访问
- 数据库用户对目标数据库具有
CREATE、DROP、INSERT、UPDATE、DELETE和ALTER权限 - PHP 版本与您的插件兼容(在工具 > 站点健康下检查源站点的 PHP 版本)
wp-content目录对 Web 服务器进程可写
重要提示:目标站点的域名或子域名不需要与源站点匹配。插件在导入期间会重写 URL。但是,如果您迁移到完全相同的域名(例如,在服务器之间移动),DNS 传播时间很重要——在验证导入之前不要更新 DNS。
第 4 步:在目标站点上安装插件
在新的 WordPress 实例上重复安装过程:插件 > 添加新插件,搜索 All-in-One WP Migration,安装并激活。
当人们设置新的 WordPress 安装并假设插件已存在时,这一步经常被忽略。实际上不会——导入过程要求插件已在目标站点上处于活动状态。
第 5 步:在导入前增加上传大小限制
这是最常见的失败点。All-in-One WP Migration 的免费版本遵守服务器的 PHP 上传限制。如果您的 .wpress 文件超过该限制,导入将静默失败或抛出模糊错误。
通过导航到 All-in-One WP Migration > 导入来检查当前限制。插件直接在该屏幕上显示最大上传大小。
要增加它,请根据您的服务器访问级别使用以下方法之一:
方法 1:直接编辑 php.ini(推荐用于 VPS 和独立服务器)
upload_max_filesize = 512M
post_max_size = 512M
memory_limit = 512M
max_execution_time = 300
max_input_time = 300保存后重启 PHP-FPM 或 Apache:
sudo systemctl restart php8.1-fpm
# or for Apache with mod_php:
sudo systemctl restart apache2方法 2:通过 .htaccess 覆盖(共享主机环境)
php_value upload_max_filesize 512M
php_value post_max_size 512M
php_value memory_limit 512M
php_value max_execution_time 300方法 3:通过 wp-config.php 覆盖
@ini_set('upload_max_filesize', '512M');
@ini_set('post_max_size', '512M');
@ini_set('memory_limit', '512M');应用更改后,刷新插件中的导入页面以确认新限制已生效。如果您使用的是共享虚拟主机方案,请联系您的主机提供商在服务器级别提高 PHP 限制,因为 .htaccess 覆盖可能受到限制。
超大型站点的替代方案:使用免费插件结合官方”Basic”扩展,或通过 FTP/SFTP 将 .wpress 文件直接上传到 wp-content/ai1wm-backups/,然后从导入屏幕中选择它。这完全绕过了 HTTP 上传大小限制。
第 6 步:导入归档文件
在目标站点上,导航到 All-in-One WP Migration > 导入。
点击从 > 文件导入并选择您的 .wpress 归档文件。插件将上传文件,然后开始恢复过程。进度条跟踪操作进度。
导入期间发生的事情:
.wpress归档文件被解包到wp-content下的临时目录中- 现有数据库被删除并替换为导入的 SQL 转储
wp-content中的文件被归档版本覆盖- URL 令牌被替换为新站点 URL(从
wp-config.php中提取) - 插件提示您完成最终确认
导入完成后,您将看到确认对话框。点击继续(或根据插件版本点击恢复)以确认数据库替换。此操作在没有目标数据库单独备份的情况下是不可逆的。
导入完成后您将立即被注销。这是预期行为——数据库现在包含来自源站点的用户账户。使用源站点的凭据登录。
第 7 步:刷新固定链接
重新登录后,导航到设置 > 固定链接。不要更改任何设置。只需滚动到底部并点击保存更改。
这会强制 WordPress 为新环境重新生成 .htaccess 重写规则。跳过此步骤会导致所有文章和页面 URL 返回 404 错误,即使内容存在于数据库中。
如果您运行的是 Nginx 而不是 Apache,则没有 .htaccess 文件。您必须确保您的 Nginx 服务器块包含标准 WordPress try_files 指令:
location / {
try_files $uri $uri/ /index.php?$args;
}第 8 步:迁移后验证清单
在验证此列表上的每个项目之前,迁移尚未完成。跳过验证是破损站点进入生产环境的原因。
URL 和域名完整性:
- 访问设置 > 常规,确认 WordPress 地址和站点地址均反映正确的目标 URL
- 运行搜索替换检查:在服务器上安装 WP-CLI 并运行
wp search-replace 'olddomain.com' 'newdomain.com' --dry-run以捕获插件在序列化数据中遗漏的任何 URL - 如果从 HTTP 迁移到 HTTPS,请在浏览器开发者工具中检查混合内容警告
功能测试:
- 测试所有导航菜单和内部链接
- 提交至少一个联系表单并验证送达情况
- 如适用,测试 WooCommerce 结账流程
- 验证媒体附件是否正确加载(图片损坏通常表明
wp_posts表中存在遗漏的 URL 重写)
安全和配置:
- 确认您的 SSL 证书在目标域名上处于活动状态并强制执行 HTTPS
- 检查目标站点上的
wp-config.php——数据库凭据、WP_DEBUG状态和密钥应反映新环境,而不是源站点 - 通过设置 > 常规或使用 WordPress 密钥生成器替换
wp-config.php中的密钥常量来重新生成 WordPress 安全密钥
缓存:
- 清除所有缓存层:对象缓存(Redis/Memcached)、页面缓存插件(WP Rocket、W3 Total Cache)以及任何 CDN 缓存
- 停用并重新激活缓存插件,强制它们检测新的环境路径
对比:All-in-One WP Migration 与其他迁移方法
| 方法 | 所需技术技能 | 支持大型站点 | URL 重写 | 费用 | 最适合 |
|---|---|---|---|---|---|
| — | — | — | — | — | — |
| All-in-One WP Migration(免费版) | 低 | 受上传上限限制 | 自动 | 免费 | 中小型站点 |
| All-in-One WP Migration(高级版) | 低 | 是(无大小限制) | 自动 | 付费 | 任意站点大小 |
| WP-CLI + rsync + mysqldump | 高 | 是 | 手动(`search-replace`) | 免费 | 开发者、大型站点 |
| Duplicator Pro | 中 | 是 | 半自动 | 付费 | 代理机构、多站点 |
| 手动(phpMyAdmin + FTP) | 高 | 是 | 手动 | 免费 | 完全控制场景 |
| cPanel/Plesk 备份恢复 | 中 | 是 | 无(相同域名) | 包含在主机服务中 | 同主机迁移 |
迁移到 VPS 或独立服务器
如果您要从共享主机迁移到 VPS 主机或独立服务器环境,All-in-One WP Migration 工作流程是相同的,但目标服务器设置需要额外注意:
- 安装 LAMP 或 LEMP 堆栈(Apache/Nginx、MySQL/MariaDB、PHP)
- 配置指向 WordPress 文档根目录的虚拟主机
- 创建具有适当权限的专用 MySQL 数据库和用户
- 在运行插件导入之前安装 WordPress 核心
- 配置 PHP-FPM 池设置以匹配或超过源站点的资源要求
对于偏好托管控制面板界面的团队,带 cPanel 的 VPS 可以显著减少服务器配置开销——cPanel 提供一键式 WordPress 安装程序、PHP 版本切换器和文件管理器,简化了导入前的设置。
常见错误及修复方法
“导入失败:无法解压归档文件”
这通常意味着 .wpress 文件已损坏、上传被中断,或目标站点磁盘空间不足。验证文件大小是否与原始文件匹配,使用 df -h 检查可用磁盘空间,并通过 SFTP 直接重新上传到 wp-content/ai1wm-backups/。
“超过最大执行时间”
PHP max_execution_time 指令对于导入大小来说太低。如上所示,在 php.ini 或 .htaccess 中将其增加到 300 或 600 秒。
“上传的文件超过 upload_max_filesize 指令”
上传大小限制未提高,或更改未应用于正确的 PHP 配置文件。从命令行运行 php -i | grep upload_max_filesize 以确认哪个 php.ini 处于活动状态。
php -i | grep upload_max_filesize
php -i | grep "Loaded Configuration File"导入后出现白屏死机
在 wp-config.php 中临时启用 WP_DEBUG 以显示实际的 PHP 错误:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);然后检查 /wp-content/debug.log 以获取具体错误。常见原因是插件与目标 PHP 版本不兼容或内存限制耗尽。
迁移后图片损坏
在 wp_posts 和 wp_postmeta 表中针对旧域名运行数据库搜索替换。使用 WP-CLI:
wp search-replace 'https://olddomain.com' 'https://newdomain.com' wp_posts wp_postmeta --precise --report-changed-only技术决策矩阵:何时使用 All-in-One WP Migration
| 场景 | 推荐方法 |
|---|---|
| — | — |
| 站点低于 512 MB,迁移到新主机 | 免费版,直接文件上传 |
| 站点超过 512 MB | 通过 SFTP 将 `.wpress` 上传到 `ai1wm-backups/` 或使用高级版 |
| 从 HTTP 迁移到 HTTPS | 导入后运行 WP-CLI `search-replace` 以捕获序列化 URL |
| 迁移多站点网络 | 使用高级版;免费版不支持多站点 |
| 自动定期备份 | 改用专用备份插件(UpdraftPlus、BackWPup) |
| 迁移到不同的 PHP 版本 | 在生产导入之前在暂存环境中测试插件兼容性 |
| 涉及域名更改 | 导入后在设置 > 常规中验证 URL 重写 |
实用关键要点
- 对于超过 200 MB 的站点,始终通过 SFTP 将
.wpress文件直接上传到wp-content/ai1wm-backups/——这可以避免所有 HTTP 上传大小限制。 - 在开始导入之前,而不是在遇到错误后,在目标站点上提高
upload_max_filesize、post_max_size、memory_limit和max_execution_time。 - 插件从归档文件中排除
wp-config.php——您的目标数据库凭据会被保留,但导入后请手动验证WP_DEBUG、WP_SITEURL和安全密钥。 - 导入后立即刷新固定链接。在 Nginx 上,验证服务器块中是否存在
try_files指令。 - 在任何涉及域名更改的迁移后运行
wp search-replace --dry-run,以捕获插件可能遗漏的序列化 URL 残留。 - 在上线之前确认 SSL 在目标站点上处于活动状态——迁移后的 SSL 证书不匹配是导致浏览器安全警告的常见原因,会损害用户信任。
- 对于生产迁移,始终先在暂存环境中测试,尤其是在更改 PHP 版本或在差异显著的服务器堆栈之间迁移时。
常见问题解答
All-in-One WP Migration 是否支持将 WordPress 迁移到不同域名?
是的。插件在导入期间使用对 SQL 转储的令牌替换过程自动将源域名重写为目标域名。导入后,通过检查设置 > 常规并运行 WP-CLI search-replace --dry-run 来验证重写是否成功,以捕获插件可能遗漏的嵌入在序列化 PHP 数据中的任何 URL。
免费版支持的最大文件大小是多少?
免费版在插件本身中没有硬编码的大小限制——限制完全来自服务器的 PHP upload_max_filesize 和 post_max_size 指令。在许多共享主机上,默认值为 128 MB。您可以通过 SFTP 将 .wpress 文件上传到 wp-content/ai1wm-backups/ 并从导入屏幕中选择它来完全绕过此限制,这跳过了 HTTP 上传机制。
迁移是否会完全覆盖目标站点的数据库?
是的。导入会删除目标数据库中的所有现有表,并用源站点的表替换它们。如果目标数据库包含您需要保留的任何数据,请在导入之前备份目标数据库。
我可以使用 All-in-One WP Migration 进行 WordPress 多站点迁移吗?
免费版不支持多站点网络迁移。导出和导入完整的多站点网络需要高级版”Multisite Extension”。网络中的单个子站点有时可以使用免费版作为独立站点迁移,但这需要手动清理特定于网络的数据库条目。
为什么导入完成后我立即被注销?
这是正确的行为。导入用源站点的数据替换了整个数据库,包括 wp_users 表。您的目标站点管理员账户不再存在——源站点的用户账户现在处于活动状态。使用原始源站点的用户名和密码登录。
