robots.txt 是抓取环节里最容易被设一次就长期不管的文件。它不控制索引,只控制抓取请求是否被允许,但不少站点把它当成隐私开关或去重工具,结果出现两类问题:想挡住的 URL 仍然出现在结果里,想保留的入口却被悄悄挡住了。
先分清禁止抓取和禁止收录
被 Disallow 的 URL 如果通过外链或其他站点暴露,仍可能被编入索引,只是缺少标题和摘要。反过来,noindex 只有在页面被抓取之后才能被读到,对一个目录同时设置 Disallow 和 noindex,等于让 noindex 失效。真正想从索引里移除的内容,通常要先放开抓取,让抓取工具读到 noindex,确认生效后再考虑收紧规则。
规则本身的常见误伤
- 通配符使用不当:一条覆盖全部带参数 URL 的规则,会连带拦掉分页、排序以及部分正常入口。
- 目录级规则:屏蔽站内搜索目录时,搜索结果页里的链接也一起被挡,如果这些页面承担了新内容的扩散作用,URL 发现会明显变慢。
- 静态资源:把 JS、CSS、图片目录一起屏蔽,渲染阶段拿不到脚本和样式,页面可见内容与首屏 HTML 不一致,会影响对链接和正文的解析。
- 末尾斜杠:带斜杠与不带斜杠的前缀在不同实现下可能被当作不同规则,写错会放开或误挡一批 URL。
文件自身返回异常时会发生什么
robots.txt 返回 5xx 或超时,多数抓取工具会按暂时不可用处理,短期内削弱抓取;持续不可用的时间较长时,各搜索引擎的处理策略并不一致,具体以官方说明为准。因此它和普通页面一样需要监控:状态码、响应时间、CDN 是否缓存了错误版本、回源是否被拦截。反过来,如果返回 404,一般视为没有任何限制,原本想挡的目录会全部对抓取开放,这是另一个常见意外。
一条可执行的核对顺序
- 在日志中筛出被 robots.txt 拦截的请求,按 URL 前缀聚合,判断哪些是真正不需要抓取的。
- 用抓取统计或站长工具中的被屏蔽数量,与日志对一遍数量级,差异过大说明规则命中范围与预期不符。
- 检查 Sitemap 中是否仍包含被 Disallow 的 URL,这类自相矛盾会持续消耗提交信号,建议清理。
- 检查内链:导航、正文、页脚里是否还有指向被屏蔽目录的链接,蜘蛛仍会发现它们,但抓取会被拒。
- 确认静态资源目录没有被误挡,必要时单独放开。
规则收紧后,URL 发现节奏会变
原本靠站内搜索页或筛选页扩散的链接可能断开,新页面只能依赖 Sitemap 和核心内链进入队列,抓取节奏通常会变慢。如果这是有意为之,需要同步保证 Sitemap 的准确性和主要栏目的内链密度;如果是误伤,越早回滚越好,因为已经生成的被屏蔽记录需要一段时间才能被新的抓取结果覆盖。
把 robots.txt 当作抓取路径的一部分来维护:每次调整前先验证规则命中范围,再观察两周左右日志中的拦截量与有效抓取量变化,而不是只看规则文本写得对不对。