很多站点都有一個影子版本:測試站、预發布站、内部演示站。它們通常是把正式站的資料複製一份,域名可能只是把 www 換成 test 或 dev,目錄也可能是 /beta/。這些地址一旦被搜尋引擎發現,就會带来两個麻烦:草稿内容被索引,以及同一批内容出現重复版本,把正式站该拿的權重分掉一部分。
草稿站是怎么被發現的
- 同事把測試連結發到群里、工單里,甚至贴到了公開頁面
- 測試站的 robots.txt 直接從正式站複製,預設允许全站抓取
- 測試域名與正式域名共用服務器和解析记錄,顺着關联就能找到
- 站点地图文件里混入了測試域名的地址
- 小程序、APP 或第三方對接时,把測試接口地址寫進了线上代碼
這些路径大多不是技術漏洞,而是流程疏漏。所以處理办法也不只是改配置,還要把检查動作固定下来。
三種隔离手段,效果從强到弱
網絡层隔离
把预發布环境放在内網或 VPN 之後,只允许公司出口 IP 訪問。外網解析不到,也就不存在被抓的問题。如果必须公網可訪問,用 IP 白名單,不要只靠一個弱口令挡着。
整站加一层訪問認證
Nginx 的 Basic Auth 或统一登入是成本最低的做法。带認證的頁面返回 401,蜘蛛通常不會收錄,這比 robots.txt 更可靠:robots.txt 只约束守規矩的爬虫,而認證是服務端直接拒绝,谁来了都進不去。
robots.txt 加 noindex,作為补充
不少人以為寫了 Disallow 就萬事大吉。實际上 Disallow 只是別抓,已经進入索引的地址仍可能出現在结果里,只是没有摘要。如果确實想让頁面彻底登出索引,需要頁面上带 noindex,而 noindex 又要求蜘蛛能抓到頁面——两者组合才有效:先允许抓取、返回 noindex,等索引消失後再改成 Disallow。
提示:robots.txt 是公開文件,寫在里面的測試路径等于把地址告诉所有人。敏感目錄不要靠它隐藏。
一份可以照着做的自查清單
- 列出所有非正式环境的域名和路径:test、dev、beta、staging、demo、uat
- 逐個检查這些站点的 robots.txt,確認不是從正式站直接複製来的
- 確認预發布站是否返回 X-Robots-Tag: noindex 响應头
- 检查正式站的站点地图與站内連結,確認没有指向測試域名
- 用 site: 加測試域名查一次,看是否存在残留索引
- 翻一遍服務器訪問日誌,看有没有来自搜尋引擎的抓取记錄
- 梳理公開 DNS、證书透明度日誌和第三方监控服務中暴露的測試域名
已经被抓到了怎么办
如果發現草稿内容已经收錄,處理顺序是:先把測試站關停或加上認證,切断繼續被抓的入口;然後對残留頁面返回 410,或者 301 到正式站的對應頁面;最後在站長平台提交移除請求。不要只是把服務器上的文件删掉,那样地址會變成 404,清理速度反而更慢。
把它變成例行動作
新項目上线时,把环境隔离寫進上线清單;每次新建预發布环境,顺手確認三件事:能不能匿名訪問、robots.txt 寫了什么、响應头里有没有 noindex。這三步花不了十分钟,但能省掉後面几個月的清理工作。