先做结论:确定 robots 异常影响范围,核心不是看 robots.txt 本身写了什么,而是把“规则覆盖的 URL 集合”与“实际抓取、收录、展示出现异常的 URL 集合”做交集。交集内的页面才是真正受影响的页面。判断顺序应当是:先确认异常现象属于抓取限制、索引移除还是展示变化,再按目录、参数、文件类型三个维度圈定规则覆盖范围,最后用日志和页面级检查验证。
robots.txt 的抓取限制不等于可靠的索引移除。这是确定影响范围时最容易走偏的地方。需要先把现象归入下面三类之一,因为三类现象的影响范围判定方法不同。
只有第一类能直接由 robots.txt 解释。第二类需要排除 noindex、 canonical、状态码、内容质量等因素后才能归因。第三类通常与 robots 无关。
打开 robots.txt,逐条读取 User-agent 与 Disallow、Allow 的组合。不要只读第一条规则,要按“最具体匹配优先”的原则逐条判断。然后从以下三个维度列出被覆盖的 URL:
Disallow: /search/ 覆盖该目录下所有路径,包括子目录。Disallow: /*?sort= 覆盖所有带 sort 参数的 URL,可能横跨多个目录。Disallow: /*.pdf$ 覆盖全站 PDF 文件。把这三个维度得到的 URL 集合合并,就是规则理论上覆盖的范围。这一步只回答“哪些 URL 被规则挡住”,不回答“哪些 URL 真的出了问题”。
理论覆盖范围往往大于真实影响范围,因为部分 URL 本来就没有被抓取需求,或已被其他方式处理。验证时执行以下步骤:
验收信号是:规则覆盖范围内、且日志中确实不再被请求的 URL 数量,与业务上真正关心的 URL 数量一致。如果前者远大于后者,说明规则写得过宽;如果前者小于后者,说明还有未发现的规则或缓存版本在起作用。
假设某站点发现产品页从搜索结果中消失,robots.txt 中有一条 Disallow: /product/。按上述方法:
/product/ 开头的 URL,包括产品列表和详情页。/product/detail/ 子目录,而列表页仍在搜索结果中。影响范围可缩小到该子目录。这个例子中,robots 规则覆盖了全部产品路径,但实际影响范围只是详情页子目录。如果不做日志验证,容易误判为全站产品页受影响,导致修复动作过大。
确定范围后,先不要急着删除整条规则。按影响范围最小的方式修改:如果只有某个子目录受影响,把 Disallow 收窄到该子目录;如果只有带参数的 URL 受影响,把规则限定到参数模式。修改后重新抓取受影响 URL 样本,观察日志中对应路径的请求是否恢复。恢复抓取不等于恢复收录,收录还需要页面本身可索引且内容合格,这两步要分开验证。