站点运营

站点运营:测试站与预发布环境治理,别让 staging 域名被蜘蛛抓进索引

改版和迁移时常用的测试域名、预发布环境,上线后常常忘了关。只要域名还在解析、页面还能打开,蜘蛛就可能把它当成第二份站点抓走并索引。本文给出一套从排查到处理的清单:怎么找出还在响应的测试站、用什么方式挡住抓取、已经进索引的页面怎么退出去,以及怎样把这一步固化进上线流程。

站点运营

站点运营:测试站与预发布环境治理,别让 staging 域名被蜘蛛抓进索引

做改版、迁移或新功能上线时,很多团队会先在一个测试域名或预发布环境里跑一版。功能验证完、正式站上线之后,这些环境常常就没人管了:域名还在解析,服务器还在响应,页面结构和正式站几乎一模一样。蜘蛛一旦拿到这个地址,就可能把它当成第二份内容抓走,甚至索引出来,和正式站形成重复。

测试环境通常从哪些路径泄露出去

  • 正式站的 HTML 里残留测试域名:图片、CSS、JS 用了测试站的绝对地址。
  • sitemap 或 RSS 里混进了测试域名下的 URL。
  • 测试站的 robots.txt 没有整体屏蔽,等于对蜘蛛敞开。
  • 内部同事把测试链接分享到公开渠道,或写进了文档、邮件。
  • CDN 缓存了测试站的内容,正式域名下也能命中。
  • 域名解析记录没清理,子域名一直可访问。

按顺序走一遍自查

  1. 列出所有域名与子域名,包括 test、dev、staging、beta、new、old 这类命名,用 DNS 查询工具确认哪些还在解析、还指向服务器。
  2. 逐个访问首页和内页,看返回状态码、看页面内容是否与正式站重复、看响应头里有没有意外的缓存策略。
  3. 检查测试站的 robots.txt,是否用 Disallow: / 整体屏蔽;确认文件真的能访问到,而不是返回 404 让规则失效。
  4. 检查访问保护:是否加了 Basic Auth、IP 白名单或必须连 VPN 才能打开。
  5. 在正式站源码里搜测试域名,重点看图片、样式表、脚本、canonical、hreflang 这几处。
  6. 检查 sitemap,确认里面只有正式域名的 URL,没有参数页和测试地址混入。
  7. 用站内搜索指令查一下测试域名,确认是否已经被索引。

发现已经被抓取甚至被索引,怎么处理

先分清两个工具的区别:robots.txt 说的是“别抓”,noindex 说的是“别索引”。如果页面已经被索引,只加 robots.txt 屏蔽反而会让蜘蛛读不到 noindex,页面可能长期留在索引里出不来。

  1. 首页面先保持可抓取,在响应头或 meta 里加上 noindex。
  2. 如果测试站内容与正式站重复,做 301 跳到正式站对应页面;不再使用的可以直接返回 410。
  3. 等索引里看不到这些地址之后,再考虑用 robots.txt 整体屏蔽,或者直接关停解析。
  4. 检查 CDN 缓存,把测试站相关的缓存清掉,避免正式域名命中旧内容。
  5. 如果时间紧,可以用搜索后台的移除工具做临时处理,但根本解决还是要靠上面的步骤。
关掉一个测试站,比事后清理几十条被索引的重复页面要省事得多。把“上线后处理预发布环境”写进发布清单,是最划算的一步。

把治理动作固化下来

  • 上线清单里固定一条:关闭测试域名解析,或改为账号保护 + 整站屏蔽。
  • 子域名命名和 DNS 记录做登记,谁开的、什么时候到期,写清楚。
  • 每月巡检一次,重点看新出现的子域名和还在响应的测试地址。
  • 改版本、换域名的操作记进变更日志,方便下次排查。

这些动作本身不复杂,难的是每次都记得做。把它当成上线流程里和“备份、回滚”同级的一步,测试环境泄露这类问题基本就不会再出现。