先不要急着改文件。把 robots.txt 当前内容、最近一次改动时间、异常现象出现的时间点列出来,再按“抓取范围—页面类型—搜索引擎—时间窗口”四层去缩小影响面。判断的核心不是猜哪条规则写错了,而是确认哪些 URL 被这条规则挡住、哪些搜索引擎执行了它、以及这些 URL 原本承担什么角色。
robots.txt 只表达抓取偏好,它限制的是爬虫抓取,不等于把页面从索引里删除。如果一个页面只是被 Disallow 挡住,搜索引擎可能仍保留旧的索引记录,只是不再更新内容;如果页面已经返回 404 或 410,那才是移除信号。这两类异常的影响范围完全不同:前者影响抓取和内容更新,后者影响索引存在与否。
检查时先看现象:是搜索结果里还显示旧标题,还是整条结果消失?是图片、CSS 这类资源加载异常,还是正文页面不更新?把现象归到“抓取受阻”或“索引移除”其中一类,后面的排查才不会跑偏。
把站点 URL 按类型分组,再逐组比对 robots.txt 规则是否命中:
对每一组,取一个真实 URL 做判断。假设规则是 Disallow: /search,那么 /search?q=a 会被命中,而 /article/search-guide 是否命中取决于匹配方式:/search 作为前缀会匹配前者,但不会匹配后者。不同爬虫对通配符 * 和结尾 $ 的支持要分别核查,不能只按自己熟悉的解释下结论。
如果规则里写了 User-agent 分组,还要确认异常现象对应的爬虫名称是否落在该分组内。未被任何分组命中的爬虫,会按它自己的默认行为处理,未必等同于你预期的“全部放行”或“全部禁止”。
这里要区分“可能原因”和“已经定位的原因”。请求量下降可能来自规则阻挡、服务器故障、页面改版、抓取预算调整等多种解释,只有当日志、规则和测试结果三者一致时,才能说影响范围已经确定。
如果异常只影响少量低价值参数页,修不修取决于它们是否消耗抓取资源、是否产生重复内容。如果影响的是正文页或渲染资源,代价通常更高:正文页被挡会导致内容无法更新,渲染资源被挡可能导致页面在抓取时呈现不完整。此时优先恢复的是“被挡且需要被抓取”的 URL,而不是一次性重写整个文件。
还要注意,站点地图提交不保证收录,HTTPS 也不保证页面一定被抓取或排名。它们不能替代 robots.txt 规则本身的正确性。若规则涉及多个搜索引擎,应分别核查各家的支持情况和测试工具,不要用一家的结果推断全部。
把当前 robots.txt 完整备份,列出所有 Disallow 和 Allow 行对应的 URL 分组,按上面的步骤逐组验证。确认影响范围后,只修改与异常直接相关的那几条规则,改完再观察目标爬虫对同一批 URL 的请求是否恢复。