不少站点的抓取日誌里會出現一些不该出現的地址:带 token 的预览連結、staging 子域名下的頁面、還没排期的草稿内容。這些頁面通常没有導航入口,也没有内鏈指向,但只要有一個人把連結分享出去,或者某個接口把地址吐给了前端,蜘蛛就有机會摸到。
预览連結是怎么漏出去的
- CMS 的预览按钮會生成带簽名參數的临时地址,分享到外部後被別的頁面引用或轉存。
- 測試域名、staging 环境没有加訪問限制,又和正式站共用同一套模板與站点地图生成逻辑。
- 前端路由把草稿狀態的内容也渲染成了可訪問 URL,只是没有在列表里展示。
- App、小程序或接口返回的字段里直接带上了未發布頁面的地址,被用戶複製走。
- 發在邮件、群聊里的预览連結被贴進了公開文档或论坛。
這些途径的共同点是:它們绕過導航和内鏈,直接给蜘蛛一個可請求的地址。蜘蛛不判断你的意图,它只認狀態碼和响應内容。
被收進索引之後會带来什么
草稿意味着内容還會改,标点、事實、價格、日期都可能變,用戶搜到的是舊版本。同一主题下出現正式頁和预览頁两個版本,彼此消耗權重。预览頁往往還缺少版權說明、联系方式,也可能带着内部批注。數量一多,還會占用本就不宽的抓取配額。
自查:先弄清有多少、来自哪里
- 用 site: 指令配合品牌词和栏目词,看看是否存在測試域名、预览域名下的结果,注意這只是參考,查不全。
- 翻原始抓取日誌,過滤含有 token、preview、draft、staging、dev、uat、beta 等字样的路径。
- 检查站点地图、RSS 輸出、接口响應里是否混進了未發布地址。
- 確認 CMS 预览連結的有效期,以及它在未登入狀態下能否打開。
處理方式:分三层做
能關掉的就直接關掉
測試站優先加基础認證或 IP 白名單,別指望 robots.txt 挡人。robots 文件是請求,不是强制措施,防護强度和一個提示牌差不多。
關不掉的用 noindex
预览頁在 HTTP 响應头里返回 X-Robots-Tag: noindex,比頁面里的 meta 标簽更稳,對非 HTML 资源同样有效。需要注意的是,不要让同一批 URL 同时被 robots.txt 屏蔽又指望 noindex 生效——被規則挡住的頁面,蜘蛛讀不到你寫的 noindex。
已经進索引的逐個處理
- 確認頁面确實要下线後,返回 410 或 301 指向正式頁,別只删資料库记錄留下空白响應。
- 在搜尋资源平台提交移除請求,把它当作临时手段而不是長期方案。
- 检查是否有外部頁面連結到它,必要时联系對方更新地址。
把检查提前到發布流程
事後清理的成本遠高于事前拦截。几個可以落地的做法:
- 预览連結預設带有效期,過期自動失效,並限制同一連結的訪問次數。
- 發布動作触發一次比對,草稿狀態對應的 URL 统一返回 404 或 403,而不是正常渲染。
- 上线前跑一遍待發布内容里的地址清單,確認没有内網域名、临时參數外泄。
- 站点地图和 RSS 只允许正式域名下、狀態為已發布的頁面進入,規則寫死在生成逻辑里,而不是靠人工把關。
如果团队規模不大,至少可以先做一件事:每月花十分钟翻一次抓取日誌里的異常路径,把新冒出来的预览地址记下来,回头补上對應的拦截規則。問题通常不是一次爆發的,而是一個入口一個入口慢慢漏出来的。
预览連結對内部来说是草稿,對外部来说就是一個公開頁面。蜘蛛不會替你区分這两者,它只按收到的响應行事。