换了服务器,收录断了半个月:搬迁时漏掉的事

· zblog · 阅读 2
摘要

换服务器看似是常规操作,但处理不好,收录会断档。我按自己的流程列一遍。搬迁前新服务器先用临时域名跑一遍,确认全部页面正常把 TTL 提前一天调低,方便切换备份数据库和主题文件,确认能还原切换当天DNS 切换后,立刻确认 HTTPS 证书有效

这次搬迁的教训挺深刻,写下来给要搬站的人提个醒。事情经过:从一台国内小厂服务器搬到另一家,域名不变,程序不变,数据完整迁移,测试访问一切正常。然后收录开始掉,掉了半个月才恢复。

复盘的时候找到了几个漏掉的地方。

漏掉的第一件:IP 变了,但没告知搜索引擎

域名解析改了 A 记录,指向新 IP。从用户角度看,网站正常访问。但搜索引擎那边呢?它记录的是「这个域名对应这个 IP」,现在 IP 变了,它需要重新验证。

这个过程本来不应该影响收录,只要新服务器能正常响应。但问题在于——新服务器刚上线,蜘蛛第一次来的时候,遇到了一些状况。

漏掉的第二件:新服务器的首次抓取全是慢响应

这是最要命的一点。

新服务器是全新环境,PHP 没开 OPcache,Z-Blog 的缓存也是空的,数据库没预热。蜘蛛来抓第一篇文章的时候,PHP 要编译模板、查数据库、生成缓存页,响应时间可能是 2-3 秒。

蜘蛛的判断逻辑很简单:响应慢 = 这站有问题 = 降低抓取频次。

一旦频次降下来,恢复起来就很慢。我当时的抓取频次从每天 2000 多次掉到了 200 多次,掉了将近十倍。

正确做法是:搬完之后,先用浏览器把主要页面都访问一遍,把缓存预热。或者写个脚本跑一遍 sitemap 里的 URL。这样蜘蛛来的时候,命中的都是缓存,响应是毫秒级。

漏掉的第三件:robots.txt 没检查

这个听起来低级,但真的很容易漏。新服务器上如果装过别的站,或者用了某些一键环境,根目录可能带了一个默认的 robots.txt,内容是 Disallow: / 或者类似的限制。

我那次就是这个情况。新服务器提供商的默认环境里带了个 robots.txt,把 /zb_system/ 和 /zb_users/ 屏蔽了。虽然主要文章路径没屏蔽,但静态资源被屏蔽,蜘蛛渲染页面时拿不到 CSS,判断页面质量时会有偏差。

搬站之后第一件事应该是:打开 你的域名/robots.txt,逐行看。

漏掉的第四件:没有主动提交改版

百度和谷歌都有「站点改版」的提交工具,用来告知 IP 或域名变更。我这次域名没变,只是 IP 变了,觉得没必要提交。

实际上,IP 大规模变更时提交一下,能让搜索引擎更快地重新建立信任。虽然不提交也会自然恢复,但提交能缩短这个窗口期。

漏掉的第五件:旧服务器关得太早

解析改完之后,我第二天就把旧服务器退了。这是个错误。

DNS 有缓存,各地生效时间不一样,可能有一两天内部分地区的解析还指向旧 IP。这时候旧服务器一关,那一部分蜘蛛和用户就访问不了了,返回的是连接超时。

正确做法是旧服务器至少保留一到两周,这期间在新旧服务器上都放好内容,确保两边都能正常访问。

恢复过程

发现收录掉了之后,做了几件事:

  1. 预热缓存,把所有主要页面访问一遍;
  2. 检查并修正 robots.txt;
  3. 在搜索资源平台提交了 sitemap,并做了几次抓取诊断,确认返回正常;
  4. 保持更新节奏不变,正常发文;
  5. 什么都不再改,等。

大概第十天开始,抓取频次回升。第十五天,索引量回到搬迁前的水平。整个过程没有做什么特别的操作,就是等搜索引擎重新建立信心。

结论:搬站的风险不在数据迁移,在迁移之后那几天的「第一印象」。把缓存预热、robots 检查、旧机保留这三件事做好,大部分问题能避免。