編輯在後台点一下“预览”,連結就带着一串临时參數出現在地址栏里。如果這個連結外網能打開、蜘蛛也能爬到,未完成的稿件、測試中的價格頁、临时上线的活動頁就可能提前進入索引。這類頁面通常没有正式導航、没有内鏈支撑,一旦被抓走,既占用抓取预算,也會在搜尋结果里留下半成品。下面按入口排查、分层防護、上线前自查和事後處理四個部分说。
一、先找出可能外泄的入口
- 後台预览連結:常见形式是 ?preview=1、?p=123&preview=true,或带一長串临时 token 的地址。
- 測試與预發环境:test.、stage.、dev. 之類的子域名,或獨立 IP 上直接放了一份整站镜像。
- CMS 預設路径:草稿箱、回收站、附件目錄、上传目錄能被直接列举。
- 临时目錄與压缩包:迁移时留下的 /new/、/bak/,以及没删掉的整站压缩包或資料库導出文件。
- 站内搜尋與篩選:结果頁可被參數化拼出大量地址,把中間狀態的列表也暴露出去。
- 空栏目頁:模板已经上传,内容還没填,但地址可以直接打開。
二、三层防護,按成本從低到高
服務器與網絡层
測試环境優先放内網,或加 IP 白名單、走 VPN。确實需要公網可訪問时,用基础認證或统一的前置網關拦住。基础認證不能百分百挡住抓取,但能過滤掉绝大多數無差別爬取,成本也最低。
頁面與响應头层
预览頁可以輸出 X-Robots-Tag: noindex, nofollow,正式頁面不要带這個头。這里要分清两件事:noindex 是“不索引”,不是“不抓取”。如果连抓取都想挡,得上 Disallow 或關掉訪問權限。两套指令混着乱用,容易出現“既没挡住抓取、也没去掉索引”的尴尬局面。
结构與协议层
測試域名整体用 robots.txt 禁止抓取,同时確認不被主站的 sitemap、内鏈、canonical 指向。發布流程里再加一條:预览連結只在登入態有效,登出登入即失效,或者設定一個較短的過期時間。
三、上线前的自查清單
- 用未登入的浏览器打開预览連結,確認是否仍能看到内容。
- 检查測試子域名的 robots.txt 和响應头,確認處于禁止抓取狀態。
- 站内检索 ?preview、?token、?tmp 這類參數,看有没有被索引的记錄。
- 翻一遍服務器目錄,確認没有残留的可下载文件,比如压缩包、备份文件、日誌文件。
- 核對 sitemap 與首頁内鏈,確認没有指向測試域或草稿地址。
- 检查後台權限,普通編輯不應能生成長期有效的公開预览連結。
四、如果已经被抓到了
顺序很重要:先断掉訪問路径,再谈索引狀態。先让頁面下线、加 noindex 或收回訪問權限,然後再等下一次抓取。如果地址已经出現在结果里,可以用移除工具做临时隐藏,同时用 404 或 410 明确告诉蜘蛛這個地址不再存在。
不建议用 302 跳回首頁。這種做法會让蜘蛛持續回来確認跳轉關系,反而延長了清理周期,也让首頁承接了一堆语义無關的信号。
预览頁面的處理原則很简單:先断掉訪問路径,再谈索引狀態。顺序反了,蜘蛛會反复回来確認一個它還够得着的地址。
五、把這一步並進發布流程
與其事後清理,不如固定成流程:预览只在登入態可见、測試域名長期禁止抓取、临时文件用完即删、上线前跑一遍上面的清單。另外,定期翻一下服務器日誌里測試域名和未公開路径的抓取记錄,能比較早地發現漏出的入口。日誌不用天天看,但迁移、改版、大促這類节点前後值得专门查一次。
這些事情本身不产生内容,但它們决定了你已经做好的内容是被正常發現,還是被半成品頁面分散掉注意力。养成习惯之後,每次大概十几分钟,比事後一邊找索引一邊删文件轻松得多。