如何更换主机而不丢数据或掉 SEO(零中断指南)
最后更新:
大多数人迟迟不换主机,只有一个原因:他们怕网站会宕、邮件会停,或者花了好几年攒下的排名会一夜蒸发。这种担心是有道理的,因为一次做砸的迁移这三样都可能发生。而一次做好的迁移,一样都不会发生,差别几乎全在顺序。把各个环节按对的次序来做,你的访客连一次闪烁都看不到。按错的次序来做,你就会用惨痛的方式明白:DNS 并不会立刻更新。这份指南会带你走一遍我们用的那套次序,好让你照着做。
如何更换主机而不丢数据或掉 SEO?
换主机的做法是:先在新服务器上搭建一份完整、能跑的网站副本,私下测试它,然后才把你的域名指向它。这条能避开几乎一切灾难的规则是:在新站上线并核实之前,绝不要取消或清空旧主机。旧主机就是你的安全网。
其余一切都从这条原则推导而来。因为新副本是在把任何访客导过去之前就搭好并测过的,所以不存在网站在公众面前坏掉的窗口。因为旧主机原封不动地继续运行,你只要把域名留在原处,就能把整件事撤销。我们在每一次迁移里都让上一套环境保持完好,正是出于这个原因,而这也是把一次让人揪心的搬迁变成一次乏味搬迁的唯一习惯。这篇文章余下的部分,就是把这条原则拆成一个个步骤。
在动手搬任何东西之前,需要备份和检查什么?
在碰新主机之前,先给当前网站做一份完整备份,并记下它是怎么搭起来的。这包括每一个文件、网站若用到数据库则连数据库、你的邮箱账户、你的 DNS 记录,以及一份记录网站所跑软件确切版本的笔记。如果你没法用手里存下的东西还原旧站,那你还没准备好开始。
一个“网站”通常比人们以为的有更多活动部件,而被遗忘的那些,恰恰是搬完之后会坏掉的。这是在做别的任何事之前值得先完成的清单:
- 网站全部文件。 完整的公开目录,不只是你记得改过的模板或页面。
- 数据库。 大多数用内容管理系统(WordPress 及类似系统)的网站,把内容、设置和用户存在数据库里,而不是文件里。只备份文件,还原出来的会是一个空壳。
- 邮箱账户。 托管在你当前服务商那里的邮箱不会随网站自动搬走。把邮件导出并记下每一个地址,否则域名一动你可能会丢邮件。
- DNS 记录。 截图或导出你当前的 DNS 区域:A 记录、用于邮件的 MX 记录,以及任何用于 SPF、DKIM 和域名验证的 TXT 记录。它们容易被忘,而正是它们让邮件流通。
- 软件与版本笔记。 PHP 版本、数据库版本,以及网站依赖的任何服务器设置。在新主机上把这些对齐,能省去意外。
- 一份你当前 TTL 的记录。 下面会细说,因为它决定最后切换有多快。
- 一份今天做的新备份。 如果你当前的主机做每日备份,把最近一次取来当作第二份副本,但在迁移当天仍要自己做一份新的。上周的备份不含这周的订单或评论。
把网站迁到新主机的步骤,按顺序是什么?
在新主机上把新站完整搭起来,确认它在那里能跑,调低你的 DNS TTL,然后把域名指过去并盯着看。按这个顺序做,公开网站就永远不会处在半成品状态。下面这套次序就是全部的活儿。
在开始这套次序之前,有两件事为它定框。如果你还在拿不准要迁到哪种主机,我们关于共享、VPS 与托管主机的指南会讲清哪种适合哪种情况。另外,计划在切换后至少让旧主机再跑上几天,因为在全世界每一处 DNS 缓存都更新之前,仍有一些访客被送往旧服务器,你会希望他们到达时它照常应答。
- 1. 在新主机上开好账户并搭好一致的环境。 PHP 和数据库版本相同或更新,关键之处服务器类型一致。先别把域名指过去。
- 2. 把文件复制过去、把数据库导入新服务器。保持文件结构完全一致,这样就没有东西需要重写。
- 3. 让网站在一个临时地址上应答,用新主机提供的那个,或者改你自己电脑的 hosts 文件,好让你从新服务器加载真正的网站,而公众仍看到旧的。
- 4. 在新服务器上测试一切。 打开关键页面、提交一个表单、登录一次、查看图片和下载是否加载,并确认由数据库驱动的部分正常。在这里、私下、在没有访客能看到的地方,把问题修好。
- 5. 把域名上的 DNS TTL 调低到一个短值(300 秒很常见),至少在切换前一天,好让最后的改动以分钟而非小时的量级传播。
- 6. 在切换前一刻减少写入。 在繁忙的网站上,短暂暂停一切会改动数据库的动作(新订单、评论),并对文件和数据做一次最终同步,好让最后一小时内产生的东西不会滞留在旧服务器上。
- 7. 更新 DNS 记录,把域名指向新主机的 IP 地址;只有当你的邮件也在搬时,才更新 MX 记录。
- 8. 盯着两台服务器,同时让 DNS 传播。随着缓存到期,流量会从旧的逐步转到新的。因为两台都在提供同一个网站,访客无论落到哪一台,拿到的都是能用的页面。
搬迁期间如何让网站保持在线,做到零中断?
零中断来自重叠:新站在你改 DNS 之前就完全能跑,旧站在你改完之后继续跑。任何时刻域名都不会指向一台空的或坏的服务器。事先调低你的 TTL,会把切换从几小时缩到几分钟。
大多数人搞错的地方,是把 DNS 当成一个一按就翻的开关。它不是。每一个最近查询过你域名的网络,都会保留旧答案,直到它缓存的那份副本到期,而这个到期时间就是你的 TTL。如果你的 TTL 设成 24 小时,在你改动记录之后,一整天里仍会有一些访客落到旧服务器上。如果旧服务器还在提供同一个网站,这完全没问题;如果你已经把它拆了,那就是一次真正的宕机。这就是为什么次序比任何单独一步都重要。提前一天调低 TTL,在整个过渡期让两台服务器都活着,那么人人都怕的“中断”,就根本找不到一个能发生的地方。
换主机时如何避免掉 SEO 排名?
如果你保持同一个域名和同样的页面地址,单是换主机这件事不会让你掉排名,因为 Google 索引的是你的网址,不是你的服务器。你掉 SEO,是在搬迁弄坏了某样东西的时候:网站在切换中宕了、地址变了、HTTPS 不工作了,或者一条抓取封锁从测试副本里被带了过来。守好这四样,你的排名就跟着你走。
这一段,诚实的预期能让你省去很多担心。一次纯粹的换主机,也就是同一域名、同样的网址、同样的内容,对搜索引擎几乎是隐形的。没有什么“换主机”需要你去报告给 Google,也没有理由让排名下跌。问题出现在迁移被掺进别的改动、或者做得不够仔细的时候。要特别盯住这些:
- 没必要就别改你的网址。 让每个页面停在同一个地址。如果一次迁移同时是一次改版、地址确实变了,就为每一个旧网址设一条永久 301 跳转,指到它的对应页,一对一,而不是全倒到首页。
- 避免抓取期间的宕机。 短暂的一次宕机很少有害,但在 Googlebot 来访时反复出错就会。上面那套零中断的方法,就是你在这里的保护。
- 把 HTTPS 正确带过去。 在切换前,确保新主机以有效证书通过 HTTPS 提供你的网站,并且从 http 到 https 的跳转仍然工作。我们的主机含一张免费 SSL 证书,因此安全版本会不留空隙地继续应答。
- 检查新副本上是否有被封锁的抓取。 测试站和预发布站通常用 noindex 标签或 robots.txt 里的 disallow 挡住搜索。这道封锁常常在复制到新主机时存活下来。在切换前后都确认线上网站可被抓取。
- 让内容保持一致。 排名系在 Google 已经认识的那些页面上。如果文字、标题和小标题在搬迁中变了,你改的就是被排名的那样东西本身,而不只是它托管在哪儿。
- 确认索引。 切换之后,打开 Google Search Console,对几个重要页面用网址检查,确认它们仍可被抓取和索引。换主机不需要用到地址更改工具,那个工具只用于搬到另一个不同的域名。
如何核实迁移真的成功了?
像一个真实访客和一个搜索引擎那样把新站过一遍:加载主要页面,测一个表单和一次登录,收发一封测试邮件,再在 Search Console 里检查两三个网址。当新服务器全部通过、而旧服务器不再收到流量时,迁移才算完成。
一次在首页“看着没事”的迁移,往里点三下可能仍是坏的,所以要检查那些默默失败的部分:
- 表单与结账。 提交一个真实表单,如果你在线售卖,就完成一笔测试交易。它们依赖不一定会带过来的服务器设置。
- 双向邮件。 往域名上的一个账户发一封,再从它发出去一封。坏掉的 MX 记录只会在这里、别无他处地显现。
- 图片、下载和链接。 加载含媒体的页面并点内部链接,抓出任何仍指向旧服务器或临时地址的东西。
- HTTPS 与跳转。 确认锁形图标出现,且 http 地址会跳转到 https。
- 索引状态。 Search Console 里的网址检查会告诉你线上页面可被访问、可被索引。
- 旧服务器上的流量。 当它的日志安静下来,DNS 就传播完了,你可以放心地把它退役。
换主机时,哪些错误会导致中断或数据丢失?
那些真正让人赔上网站和排名的失误是可预料的,而它们每一个都来自违反“先测试、留旧主机”这条规则。事先知道它们,就是大部分的保护。
- 太早取消旧主机。 最贵的错误。旧服务器一旦没了,你的安全网和你的退路也随它去了,而任何仍指向那里的 DNS 都会撞上一片空。
- 忘了数据库。 只复制文件、不复制数据库,会让一个内容网站变空。内容活在数据库里,不在文件里。
- 没有先调低 TTL。 跳过这一步,本该几分钟的切换会拖成几小时,访客整段时间都被分散在两台服务器之间。
- 在搬迁中丢了邮件。 邮箱和 MX 记录容易被忽略,因为它们感觉上跟网站是分开的。在你碰 DNS 之前,把邮件导出、把记录抄下。
- 把一道预发布封锁留在原处。 从测试站复制过来的 noindex 标签或 robots.txt disallow,可能在几天后悄悄把你的线上页面从 Google 里移除。
- 改了网址却不做跳转。 如果地址变了、又没有东西跳转旧的,你既留下了流量损失,又递给 Google 一堆死链接。
网站该自己搬,还是交给别人搬?
如果你对备份、DNS 和数据库都上手、而且网站简单,就自己搬。如果网站在赚钱、跑在数据库上,或者你没把握能用自己的备份把它还原,就交给别人搬。一次搞砸的迁移,其代价几乎总是高于一次干净迁移的代价。
两种选择都不丢人,而诚实的决定性因素,是一个错误会让你付出多大代价。一个小小的展示型网站,你一个下午就能重建,是个练手的好地方。一个在收订单的商店,或一个花了几年才排上去的网站,都不是在压力下学 DNS 的地方。这正是我们的网站迁移服务存在的原因:我们在碰你的域名之前先搭好并测好新站,以零中断、零数据丢失的方式搬迁,并把旧环境留作退路,直到新站被确认。如果你搬家是因为当前主机一直不靠谱,我们的托管网站主机含每日备份和免费 SSL,这样下一次搬家,要是真还有一次的话,就从一个安全得多的起点开始。
如果你的网站在赚钱、或花了几年才排上去,迁移就不是碰运气的时候。告诉我们你的域名和你想搬到哪儿,我们会以零中断、零数据丢失的方式处理切换,并把你的旧主机留作退路,直到新站被核实。就搬迁网站的事和 Web Roots 聊聊。