robots.txt 是放在站点根目錄的纯文本文件,用来告诉搜尋蜘蛛哪些路径可以抓、哪些不建议抓。它不负责把頁面從索引里移除,也不保證蜘蛛一定不訪問,但在 URL 發現环节,它确實是最先被讀取的規則之一。很多站点运营中的“URL 發現慢”“重要頁面不被抓”,追查到最後,不一定是内容問题,而是 robots 規則寫得太宽、太窄,或者長期没有维護。
先分清抓取與索引
Disallow 是抓取层面的指令,不是索引移除手段。一個 URL 被 robots.txt 屏蔽後,如果外部仍有連結指向它,它依然可能出現在搜尋结果里,只是蜘蛛無法讀取内容。因此,站点运营中不要用 robots.txt 来管理已收錄頁面的展示狀態。需要控制索引时,應優先考虑頁面級別的 meta robots 或 HTTP 头。
常见規則誤伤
- 用 Disallow: /*? 一刀切屏蔽所有带參數的 URL,结果把分頁、篩選、追踪參數之外的正常連結也挡在外面。
- 只寫 Disallow: / 而忘记後續放行,整站抓取入口被關閉。
- 把後台路径寫進 robots.txt 当作安全措施。它只是降低被發現概率,不能替代登入鉴權。
- 忽略路径大小寫與目錄匹配差异,比如 /Admin 與 /admin 在某些服務器上被视為不同路径。
- Allow 與 Disallow 同时存在时優先級理解错誤。通常最長匹配優先,長度相同时 Allow 優先。
通配符與结尾匹配
常见的两個符号是 * 和 $。* 匹配任意字符,$ 匹配 URL 结尾。例如 Disallow: /*.pdf$ 只屏蔽以 .pdf 结尾的連結,而不是所有包含 .pdf 的路径。不同搜尋蜘蛛對通配符的支持程度有细微差异,使用前建议用平台提供的測試工具驗證,不要凭经驗假设所有蜘蛛行為一致。
URL發現的三层配合
robots.txt 管抓取入口,站点地图管提交,内鏈管發現路径。三者需要保持一致:站点地图里提交的 URL 不應被 robots 屏蔽;被屏蔽的 URL 不宜大量出現在内鏈中,否則會占用抓取配額;重要栏目頁和内容頁不應被誤伤。站点运营中常见的矛盾是,一邊在内鏈中大量指向篩選頁,一邊又用 robots 屏蔽篩選頁,蜘蛛反复進入又被拒绝,效率自然下降。
一個可操作的检查流程
- 列出 robots.txt 目前規則,按路径分组,标注每條規則的意图。
- 用搜尋资源平台的 robots 測試工具,逐條驗證栏目頁、内容頁、分頁、篩選頁等典型 URL。
- 對比服務器日誌中蜘蛛的抓取路径,观察是否存在大量被屏蔽目錄的訪問或频繁 404。
- 检查站点地图與内鏈,確認重要 URL 均可抓取且路径一致。
- 調整規則後观察一段時間,不要频繁改動。robots.txt 的變更會影响抓取节奏,短期内不宜反复。
蜘蛛池解决的是入口數量,robots.txt 解决的是抓取邊界。邊界不清楚,入口越多,浪費的抓取也越多。
最後,robots.txt 是公開文件,不要在其中暴露敏感路径。規則宜少而明确,能用 Allow 放行的尽量少用 Disallow 封堵。站点运营的 URL 發現,最终還是要回到内容质量、站点结构與内鏈设計本身,robots.txt 只是把门開對位置。