搜尋抓取

robots.txt 的拦截邊界:Disallow 規則下的 URL 發現與抓取路径核對

robots.txt 只约束抓取請求,不直接决定收錄。本文梳理 Disallow 規則與 URL 發現的關系,包括通配符誤伤、目錄級拦截带走静態资源、文件自身返回異常时的抓取节奏變化,以及日誌、抓取統計、Sitemap 與内鏈的核對顺序,帮助减少被誤挡的入口和無效抓取。

搜尋抓取

robots.txt 的拦截邊界:Disallow 規則下的 URL 發現與抓取路径核對

robots.txt 是抓取环节里最容易被设一次就長期不管的文件。它不控制索引,只控制抓取請求是否被允许,但不少站点把它当成隐私開關或去重工具,结果出現两類問题:想挡住的 URL 仍然出現在结果里,想保留的入口却被悄悄挡住了。

先分清禁止抓取和禁止收錄

被 Disallow 的 URL 如果通過外鏈或其他站点暴露,仍可能被编入索引,只是缺少标题和摘要。反過来,noindex 只有在頁面被抓取之後才能被讀到,對一個目錄同时設定 Disallow 和 noindex,等于让 noindex 失效。真正想從索引里移除的内容,通常要先放開抓取,让抓取工具讀到 noindex,確認生效後再考虑收紧規則。

規則本身的常见誤伤

  • 通配符使用不当:一條覆盖全部带參數 URL 的規則,會连带拦掉分頁、排序以及部分正常入口。
  • 目錄級規則:屏蔽站内搜尋目錄时,搜尋结果頁里的連結也一起被挡,如果這些頁面承担了新内容的扩散作用,URL 發現會明顯變慢。
  • 静態资源:把 JS、CSS、图片目錄一起屏蔽,渲染阶段拿不到脚本和样式,頁面可见内容與首屏 HTML 不一致,會影响對連結和正文的解析。
  • 末尾斜杠:带斜杠與不带斜杠的前缀在不同實現下可能被当作不同規則,寫错會放開或誤挡一批 URL。

文件自身返回異常时會發生什么

robots.txt 返回 5xx 或超时,多數抓取工具會按暂时不可用處理,短期内削弱抓取;持續不可用的時間較長时,各搜尋引擎的處理策略並不一致,具体以官方說明為准。因此它和普通頁面一样需要监控:狀態碼、响應時間、CDN 是否缓存了错誤版本、回源是否被拦截。反過来,如果返回 404,一般视為没有任何限制,原本想挡的目錄會全部對抓取開放,這是另一個常见意外。

一條可执行的核對顺序

  1. 在日誌中筛出被 robots.txt 拦截的請求,按 URL 前缀聚合,判断哪些是真正不需要抓取的。
  2. 用抓取統計或站長工具中的被屏蔽數量,與日誌對一遍數量級,差异過大說明規則命中范围與预期不符。
  3. 检查 Sitemap 中是否仍包含被 Disallow 的 URL,這類自相矛盾會持續消耗提交信号,建议清理。
  4. 检查内鏈:導航、正文、頁脚里是否還有指向被屏蔽目錄的連結,蜘蛛仍會發現它們,但抓取會被拒。
  5. 確認静態资源目錄没有被誤挡,必要时單獨放開。

規則收紧後,URL 發現节奏會變

原本靠站内搜尋頁或篩選頁扩散的連結可能断開,新頁面只能依赖 Sitemap 和核心内鏈進入队列,抓取节奏通常會變慢。如果這是有意為之,需要同步保證 Sitemap 的准确性和主要栏目的内鏈密度;如果是誤伤,越早回滚越好,因為已经生成的被屏蔽记錄需要一段時間才能被新的抓取结果覆盖。

把 robots.txt 当作抓取路径的一部分来维護:每次調整前先驗證規則命中范围,再观察两周左右日誌中的拦截量與有效抓取量變化,而不是只看規則文本寫得對不對。