在不同主机之间迁移 WordPress 网站时,最常见的翻车原因只有一个:先改了 DNS,再在访客眼皮底下修网站。安全的顺序恰恰相反:先把网站复制到 WebGee,在旧主机继续服务访客的同时完成测试,最后再把域名指向新的主机。
本指南将借助你 cPanel 账户中现成的工具,按照这个顺序从头到尾带你完成迁移。
要点速览
- 先在 WebGee 上复制并测试网站,再修改 DNS,这样旧主机在整个过程中都能继续为访客提供服务。
- Softaculous 远程导入和 Installatron 都能通过 FTP 从其他主机拉取 WordPress 网站,Installatron 还支持 Multisite 多站点网络。
- 借助 cPanel 中的 Website Preview,你可以在域名指向 WebGee 之前测试迁移后的网站,伪静态规则和 SSL 均可正常工作。
- 请使用欢迎邮件中提供的域名服务器;如果你在 Cloudflare 或其他外部服务商处管理 DNS,则改用 A 记录。
- 新域名默认不参与 AutoSSL,因此运行 AutoSSL 前,需要先在 SSL/TLS Status 中将其加入。
开始之前
- WebGee 欢迎邮件,其中列有你所在服务器的域名服务器
- 旧主机可用的 FTP(最好是 SFTP 或 FTPS)登录凭据,并已在 FTP 客户端中测试通过
- 从 FTP 登录目录到 WordPress 文件夹的路径,通常是 public_html
- WordPress 管理员用户名和密码
- 域名注册商的访问权限,或 Cloudflare 等外部 DNS 服务商的访问权限
为什么顺序很重要
同一时间,你的域名只能指向一台服务器。如果在新站点能正常运行之前就切换过去,那么在你修好之前,每位访客看到的都是一个半成品。
趁 DNS 仍指向旧主机时,在 WebGee 上搭好网站。旧站点全程照常运行,访客根本察觉不到任何变化。确认新站点运行正常后再修改 DNS,访客会随着 DNS 传播逐步转到新站点。
选择导入方式
根据网站当前所在位置,你有三种方式可选:
- Softaculous 远程导入:通过 FTP 从其他主机拉取网站,适用于大多数单站点迁移。
- Installatron:功能相同,只是表单略有不同。如果你更习惯用它,或者网站是 Multisite 多站点网络(Softaculous 远程导入不支持),可以选择这种方式。
- 手动迁移文件和数据库:适用于在你自己电脑上搭建的网站。
使用 Softaculous 导入
- 登录 cPanel,打开 Softaculous。
- 进入 WordPress 页面,选择 Import 标签,然后选择 From Remote Server。
- 在源站信息中填写域名(不带
http://或https://),选择协议,然后填写旧主机的 FTP 用户名、密码和 FTP Path。 - 在目标信息中,选择用于访问该网站的域名以及要导入的数据库。
- 点击 Import。
大部分困惑都来自两类字段。Server Host 仅在域名已不再解析到旧服务器时才需要填写,比如你已经改过 DNS。这种情况下,请在此填写旧服务器的主机名或 IP 地址,否则导入程序会连到错误的位置。如果 DNS 仍指向旧主机,留空即可。
两个目录字段分别对应迁移的两端。Installation Directory 是网站在源主机上的位置,In Directory 是网站在 WebGee 上应放置的位置。这两项通常都留空。
导入在后台运行,你可以关闭页面。导入开始时你会收到邮件通知,也可以在 Task List 标签中查看进度。完整的字段说明请参阅使用 Softaculous 远程导入迁移 WordPress。
保护好你的 FTP 密码 普通 FTP 会以明文方式发送密码。如果旧主机支持,请选择 SFTP 或 FTPS;无论使用哪种协议,迁移完成后都请修改旧主机上的 FTP 密码。
或者使用 Installatron 导入
在 cPanel 的 Software 区域打开 Installatron Applications Installer,搜索 WordPress,点开三横线菜单,选择 Import existing install。
在源站一侧,填写网站 URL、远程服务器的主机名或 IP,以及 FTP 用户名、密码和路径。如果你是在修改 DNS 之前迁移,而域名已经解析到了意料之外的地方,请将 URL IP Address 设为旧服务器的 IP,以便 Installatron 能连上源站。
在目标一侧,将 Directory 留空即可从域名根目录访问网站,并让 Installatron 自动创建数据库。复用现有数据库可能会覆盖其他网站的数据表。导入完成后,网站会出现在 My Applications 中。完整表单说明请参阅使用 Installatron 迁移 WordPress。
迁移本地搭建的网站
本地网站需要手动迁移,共有四样东西要搬过去:文件、数据库、wp-config.php 中的数据库凭据,以及存储在数据库中的网站 URL。
- 在 cPanel 的 Domains 中添加域名,并记下其文档根目录。
- 在 MySQL Databases 中创建数据库和用户,并为该用户授予 All Privileges。
- 将 WordPress 文件夹中的内容上传到文档根目录。在 File Manager 中解压 zip 压缩包,比通过 FTP 上传成千上万个文件快得多。
- 通过 phpMyAdmin 导入你导出的
.sql文件。 - 在
wp-config.php中设置新的数据库名、用户名和密码。DB_HOST保持localhost不变。 - 替换数据库中的本地 URL。
最后这一步最容易被遗漏。在 phpMyAdmin 的 SQL 标签中运行以下语句;如果你的数据表前缀不是 wp_,请相应修改:
UPDATE wp_options SET option_value = 'https://example.com'
WHERE option_name IN ('siteurl', 'home');本地 URL 还会嵌在文章内容、小工具和主题设置中。这些请使用 Better Search Replace 插件处理,因为它能正确处理序列化数据,而普通的 SQL 查找替换会破坏这类数据。每个步骤的详细说明请参阅将本地 WordPress 网站迁移到主机。
修改 DNS 前先测试新站点
在 cPanel 中打开 Website Preview,选择你的域名,然后打开它提供的预览地址。该地址通过服务器主机名的一个子域名来访问你的网站,效果与 DNS 指向 WebGee 后完全一致:伪静态规则正常,SSL 正常,WordPress 也一切如常。
不要使用 cPanel 旧式的 http://server-ip/~username 预览方式。它会导致 .htaccess 伪静态规则失效,必须修改 WordPress 的 Site URL 才能显示页面,无法使用 SSL,还会暴露服务器的 IP 地址。
在预览站点上,请检查以下几点:
- 网站不会跳转到旧域名。
- 图片能正常加载。图片无法显示,说明数据库中的 URL 仍指向旧主机。
- 可以用原来的凭据登录
wp-admin。
更多详情请参阅在指向 DNS 之前预览网站。
使用其他方式测试 如果你通过其他方式预览网站,WordPress 会尝试把你重定向到正式域名。你可以在 wp-config.php 中用预览地址定义 WP_HOME 和 WP_SITEURL,临时绕过这一行为。上线前请删除这两行,否则网站会一直指向预览地址。
将域名指向 WebGee
请使用欢迎邮件中提供的域名服务器。它们与你账户所在的服务器一一对应,优先于任何通用列表。常见的一组是 ns1.webgee.com 和 ns2.webgee.com,但部分账户分配的是 ns1.primens.one 和 ns2.primens.one。你可以在客户中心的服务详情中确认正确的域名服务器。
在哪里修改,取决于域名的注册位置:
- 在 WebGee 注册:在客户中心的 Domains → My Domains → Nameservers 中修改。
- 在其他地方注册:到对应的注册商处修改。
如果你使用 Cloudflare 或其他外部 DNS 服务商,请不要修改域名服务器,而是将 A 记录指向你服务器的 IP 地址,该地址可在欢迎邮件和客户中心中查到。可以在终端中检查修改是否生效:
dig +short NS example.comDNS 传播通常需要几个小时,最长可能需要 48 小时。由于新旧两个站点都能正常运行,在此期间访客会访问到其中之一,而不会遇到错误页面。请参阅应该使用哪些域名服务器。
使用免费 SSL 证书保护网站
在账户有效期内,WebGee 会通过 AutoSSL 免费签发证书。AutoSSL 通过 HTTP 从域名获取文件来验证域名,因此请在 DNS 解析到 WebGee 之后再运行它。
- 在 cPanel 的 Security 区域打开 SSL/TLS Status。
- 勾选表头中的复选框,选中所有域名。
- 点击 Include Domains during AutoSSL。新域名默认不参与 AutoSSL,跳过这一步直接运行 AutoSSL 不会有任何效果。
- 点击 Run AutoSSL,等待运行完成后刷新页面。
每个域名都应显示绿色锁形图标和 AutoSSL Domain Validated。证书有效期为 90 天,到期会自动续期。接着,在 cPanel 的 Domains 页面中为该域名开启 Force HTTPS Redirect。请参阅安装免费 SSL 证书和为网站强制启用 HTTPS。
收尾工作
在确认新站点运行正常、DNS 完全传播之前,请保留旧站点。迁移全部完成后,如果还没修改旧主机上的 FTP 密码,请尽快修改。
常见问题
可以在修改 DNS 之前迁移 WordPress 网站吗?
可以,而且建议这样做。在 Softaculous 中,如果域名已不再解析到旧服务器,请在 Server Host 中填写旧服务器的主机名或 IP;在 Installatron 中则使用 URL IP Address。然后先在 Website Preview 上测试,再切换 DNS。
导入后图片为什么显示不出来?
图片无法显示,说明数据库中的 URL 仍指向旧主机或本地站点。请使用 Better Search Replace 插件更新这些 URL,它能安全处理序列化数据。
DNS 切换到 WebGee 需要多长时间?
DNS 传播通常需要几个小时,最长可能需要 48 小时。你可以用 dig +short NS example.com 查看进度。
迁移后网站为什么还是没有 SSL 证书?
新域名默认不参与 AutoSSL,因此运行 AutoSSL 前,需要先在 SSL/TLS Status 中将其加入。此外,如果域名尚未解析到你的 WebGee 账户,AutoSSL 也会失败。