搜索抓取

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 当作抓取路径的一部分来维护:每次调整前先验证规则命中范围,再观察两周左右日志中的拦截量与有效抓取量变化,而不是只看规则文本写得对不对。