WordPress 网站迁移是每个站长都绕不开的任务,无论是因为更换主机商、从本地开发环境上线到生产服务器,还是需要复制一份到测试环境。迁移看起来复杂,但只要掌握了标准流程,整个过程其实非常清晰。迁移的核心任务是:将文件(主题、插件、上传图片)和数据库(文章、设置、用户)从源服务器完整复制到目标服务器,然后让两者正确关联。

迁移的第一步是备份源网站的所有文件和数据库。文件备份需要将网站根目录下的所有文件打包。使用命令行 tar -czf site-backup.tar.gz /网站根目录 可以生成一个压缩包,或者通过 FTP 下载全部文件。数据库备份使用 wp db export 命令最方便,生成一个 .sql 文件。如果使用 phpMyAdmin,也可以通过导出功能获取 SQL。

将备份文件复制到目标服务器是第二步。通过 scp 或 rsync 命令可以安全地传输大文件,如果文件较小也可以用 FTP 上传。文件上传到目标服务器的网站根目录后,需要解压并设置正确的文件权限:文件夹设置为 755,文件设置为 644。wp-config.php 通常比较特殊,权限可以设置为 600 以提高安全性。

导入数据库是第三步。在目标服务器上创建一个新的数据库,分配好用户和权限,然后导入 SQL 文件。命令行方式 mysql -u 用户名 -p 数据库名 < 备份.sql 是最快的。如果使用宝塔面板等管理工具,也可以在图形界面中导入。导入后需要验证数据是否完整,确认表的数量和数据记录数与源服务器一致。

第四步是修改 wp-config.php 中的数据库连接信息。将 DB_NAME、DB_USER、DB_PASSWORD、DB_HOST 替换为目标服务器的数据库信息。如果目标服务器的表前缀与源服务器不同,也需要调整 $table_prefix。此外,如果你的源网站使用了 Redis 对象缓存,迁移后需要更新 Redis 的连接配置。

第五步是处理 URL 的替换。WordPress 在数据库中以绝对路径存储了很多 URL,包括 siteurlhome、文章中的内部链接、图片地址等。如果更换了域名或者路径,这些 URL 需要批量替换。最可靠的方式是使用 WP-CLI 的搜索替换命令,它能安全地处理序列化数据:

wp search-replace 'https://旧域名.com' 'https://新域名.com' --all-tables

注意:如果新旧 URL 路径长度不同,需要在执行前后刷新固定链接。执行完成后,去后台设置 → 固定链接中点击“保存”来刷新重写规则。

对于跨环境迁移(比如从本地开发环境迁移到线上),环境差异可能包括 PHP 版本、MySQL 版本、文件路径等。迁移前最好确认目标服务器的环境满足 WordPress 的最低要求,并且 PHP 版本不低于源服务器。如果服务器使用了 Nginx 而不是 Apache,确保重写规则已正确配置。

迁移后的验证步骤同样重要。依次检查:首页是否正常加载、文章和页面内容是否完整、图片是否显示(检查媒体库)、链接是否正确指向新域名、后台登录是否正常、表单提交和评论是否工作、WooCommerce 订单数据是否完整。如果发现 404 问题,先刷新固定链接,如果仍然 404,检查服务器的重写规则配置。

迁移过程中常见的陷阱包括:忘记更新 wp-config.php 中的 WP_HOME 和 WP_SITEURL 常量、缓存插件未清除导致看到旧内容、SSL 证书未配置导致混合内容报错、phpMyAdmin 导出时使用了非 UTF-8 编码导致中文乱码。针对 SSL 问题,迁移后可以使用 Velvet Blues Update URLs 或者 Better Search Replace 插件将 http:// 批量替换为 https://

如果你需要在不同服务器之间频繁迁移,可以考虑使用专业的迁移插件如 Duplicator、All-in-One WP Migration 或 WP Migrate DB。这些插件会将文件和数据库打包成一个下载包,并在目标服务器上自动解压和配置,大大简化了操作流程。但要注意,插件方式在处理大文件时可能会超时,大型网站还是建议手动迁移。

最后记住:迁移过程中,源服务器和目标服务器的数据是独立的,即使迁移失败,源网站也不会受影响。在确认目标网站完全正常之前,不要删除源服务器上的数据。保留备份至少一周,确认所有功能都运行无误后再清理临时文件。