很多站点的抓取問题,不是出在正式頁面上,而是出在那些“本来没打算让人看”的地址上。編輯在後台新建的草稿、CMS 自動生成的预览連結、從正式站複製出来的測試环境、上传时顺手留下的示例頁面,只要能被外部訪問,就可能被連結、被爬虫记錄,甚至出現在搜尋结果里。等到發現时,用戶打開的往往是排版错乱、價格没改、文案還寫着“測試”的頁面。
這類地址是怎么漏出去的
它們通常不是被主動提交的,而是被以下几種方式带出去的:
- 草稿或预览連結被複製到聊天群、邮件、协作文档里,對方一打開,連結就流到了外部。
- 预览地址没有做鉴權,只要摸清規律(例如 ?preview=123)就可以逐個遍歷。
- 測試环境挂在正式域名的子域下,也没有做訪問限制,蜘蛛顺着解析或外鏈就摸進来了。
- 站点地图、RSS 或内容接口把未發布狀態的内容一並輸出。
- 舊版頁面改版後没有刪除,文件仍在服務器上,只是没有了入口。
- 上传目錄、临时目錄開啟了目錄列表,路径能被逐层点開。
一份可执行的自查清單
建议按下面的顺序過一遍,重点是確認狀態,而不是“大概没問题”。
- 列出所有可訪問的域名和子域,包括測試、预發、舊版本以及 CDN 回源地址。
- 用未登入的浏览器,随机挑十條草稿和预览連結打開,看是否需要登入、是否返回 404。
- 检查 robots.txt 是否對測試域和後台目錄做了整体屏蔽,同时確認這些規則没有誤伤正式内容。
- 查看站点地图與 RSS 輸出,確認只包含已發布且允许索引的地址。
- 检查内容接口和 JSON 輸出,確認草稿字段不會随接口一起暴露。
- 在服務器上查找上传目錄、备份文件、編輯器残留文件,確認無法直接訪問。
- 翻一翻訪問日誌,看是否有陌生 IP 频繁訪問带 preview、draft、test 字样的路径。
處理方式怎么選
優先刪除或整体下线
已经不再需要的測試站、废弃目錄、舊版頁面,最省事的做法是直接刪除或整体下线,把域名解析和目錄一起收掉。留着“以後可能用”的頁面,往往就是下一次事故的来源。
需要保留的,用訪問控制
還要繼續用来预览和协作的頁面,加上登入校驗或限定内網訪問更稳妥。只靠 noindex 或 robots.txt 约束,能挡住守規矩的爬虫,挡不住想看的人。
短期可用的兜底
确實来不及處理的,可以先加 noindex 或 X-Robots-Tag,同时把地址從站点地图、導航和内鏈中移除。但如果頁面本身包含價格、用戶信息或未公開内容,這種做法只能算临时措施,不能長期依赖。
上线时的收尾動作
- 發布正式地址後,確認舊预览連結返回 404 或跳轉到正式頁。
- 在站点地图中確認正式地址已经出現,预览地址不在其中。
- 检查 canonical 指向的是正式地址,而不是预览地址。
- 如果预览内容和正式内容曾同时在线上存在過一段時間,留意日誌里预览地址的抓取是否在逐步减少。
预览連結本身不是問题,“能被外部打開而且長期不清理”才是問题。把它当成上线流程里的一個固定步骤,比事後补救便宜得多。
小结
草稿、预览和測試頁面處在运维與内容流程的交叉地带,容易被两邊都当成“別人负责的事”。一個简單的做法是:在上线清單里加一條——發布前確認预览地址已经失效。坚持一段時間之後,日誌里的奇怪路径會明顯變少,用戶也不會再点到一個寫着“測試内容”的頁面。