做改版、迁移或新功能上线时,很多团队會先在一個測試域名或预發布环境里跑一版。功能驗證完、正式站上线之後,這些环境常常就没人管了:域名還在解析,服務器還在响應,頁面结构和正式站几乎一模一样。蜘蛛一旦拿到這個地址,就可能把它当成第二份内容抓走,甚至索引出来,和正式站形成重复。
測試环境通常從哪些路径泄露出去
- 正式站的 HTML 里残留測試域名:图片、CSS、JS 用了測試站的绝對地址。
- sitemap 或 RSS 里混進了測試域名下的 URL。
- 測試站的 robots.txt 没有整体屏蔽,等于對蜘蛛敞開。
- 内部同事把測試連結分享到公開渠道,或寫進了文档、邮件。
- CDN 缓存了測試站的内容,正式域名下也能命中。
- 域名解析记錄没清理,子域名一直可訪問。
按顺序走一遍自查
- 列出所有域名與子域名,包括 test、dev、staging、beta、new、old 這類命名,用 DNS 查询工具確認哪些還在解析、還指向服務器。
- 逐個訪問首頁和内頁,看返回狀態碼、看頁面内容是否與正式站重复、看响應头里有没有意外的缓存策略。
- 检查測試站的 robots.txt,是否用 Disallow: / 整体屏蔽;確認文件真的能訪問到,而不是返回 404 让規則失效。
- 检查訪問保護:是否加了 Basic Auth、IP 白名單或必须连 VPN 才能打開。
- 在正式站源碼里搜測試域名,重点看图片、样式表、脚本、canonical、hreflang 這几處。
- 检查 sitemap,確認里面只有正式域名的 URL,没有參數頁和測試地址混入。
- 用站内搜尋指令查一下測試域名,確認是否已经被索引。
發現已经被抓取甚至被索引,怎么處理
先分清两個工具的区別:robots.txt 说的是“別抓”,noindex 说的是“別索引”。如果頁面已经被索引,只加 robots.txt 屏蔽反而會让蜘蛛讀不到 noindex,頁面可能長期留在索引里出不来。
- 首頁面先保持可抓取,在响應头或 meta 里加上 noindex。
- 如果測試站内容與正式站重复,做 301 跳到正式站對應頁面;不再使用的可以直接返回 410。
- 等索引里看不到這些地址之後,再考虑用 robots.txt 整体屏蔽,或者直接關停解析。
- 检查 CDN 缓存,把測試站相關的缓存清掉,避免正式域名命中舊内容。
- 如果時間紧,可以用搜尋後台的移除工具做临时處理,但根本解决還是要靠上面的步骤。
關掉一個測試站,比事後清理几十條被索引的重复頁面要省事得多。把“上线後處理预發布环境”寫進發布清單,是最划算的一步。
把治理動作固化下来
- 上线清單里固定一條:關閉測試域名解析,或改為帳號保護 + 整站屏蔽。
- 子域名命名和 DNS 记錄做登记,谁開的、什么时候到期,寫清楚。
- 每月巡检一次,重点看新出現的子域名和還在响應的測試地址。
- 改版本、換域名的操作记進變更日誌,方便下次排查。
這些動作本身不复杂,难的是每次都记得做。把它当成上线流程里和“备份、回滚”同級的一步,測試环境泄露這類問题基本就不會再出現。