最小修复试验的核心做法是:每次只改一条规则,改完后用具体URL验证它是否从“被禁止”变为“可抓取”,并观察搜索引擎是否重新抓取。不要一次重写整个文件,否则无法判断是哪条规则起了作用。下面从一个假设例子展开,说明怎样安排这种试验。
假设某站点的 robots.txt 原本写着 Disallow: /search,后来站内新增了 /search-guide/ 这个内容目录。由于前缀匹配,/search-guide/ 也被一并禁止抓取。运营方想恢复这个目录的抓取,同时保留对 /search 的禁止。这就是一个适合做最小修复试验的场景。
常见错误是直接把 Disallow: /search 删掉,结果 /search 也被放开;或者写成 Disallow: /search-guide/ 的允许规则,但顺序和语法处理不当。正确思路是先明确目标:只放开 /search-guide/,继续拦住 /search。
面对这种前缀冲突,通常有两种处理方案,适用条件不同。
Disallow: /search 改为更精确的写法,例如 Disallow: /search? 或 Disallow: /search/,让 /search-guide/ 不再命中。适用条件是原禁止目标本身有稳定特征,比如都带查询参数或都位于某个子目录。Allow: /search-guide/。适用条件是禁止范围较宽、无法用一条规则精确收窄,且需要放开的路径数量有限。判断依据是:改完后用目标URL实测,看它是否仍被禁止。如果两种方案都能达到目的,优先选规则更少、更易读的那个,因为规则越少,后续误伤的概率越低。
Disallow: /search 改为 Disallow: /search?。/search-guide/ 应变为可抓取,/search?q=test 应仍被禁止,/search/ 按你的预期确认。验证时要注意:robots.txt 的抓取限制只影响爬虫是否抓取,不等于可靠的索引移除。一个URL被禁止抓取后,它仍可能因为外部链接而出现在搜索结果里,只是摘要信息受限。所以不要用“加了 Disallow 就会从搜索结果消失”来判断试验是否成功。
每次试验结束,按下面几项核对:
User-agent 与规则是否配对、冒号后是否有空格、大小写是否一致。如果目标路径已可抓取,但搜索引擎迟迟不重新抓取,这不一定是写法问题。抓取频率受站点权重、链接结构、站点地图等因素影响,站点地图也不保证收录。此时应检查内链是否指向该目录、是否有其他页面引用,而不是继续改 robots.txt。另外,不同搜索引擎对 Allow 与 Disallow 的优先级处理可能不同,需要分别核查,不能只看一个引擎的结果就下结论。
下一步:挑一个你站点里疑似被前缀规则误伤的目录,按上面的步骤只改一条规则,记录修改前后的验证结果,再决定是保留该方案还是换用另一种写法。