最小修复试验的核心是:每次只改一条规则,改前保存原文件,改后用可复现的抓取测试对比结果,确认这条规则确实产生了预期影响再继续。不要一次重写整个robots.txt,否则无法判断哪条改动生效、哪条改坏了。
动手之前先把现象写清楚,因为不同现象对应的规则完全不同:
Disallow封禁,但其中有些页面需要被抓取——这属于规则范围过宽。把现象写成一句可验证的话,例如“/private/下的页面不应被抓取,但抓取测试显示仍可访问”。这句话就是试验的验收标准。
打开robots.txt,逐条看三件事:
User-agent: *只对未单独声明的抓取方生效;如果文件里已经为某个抓取方写了单独段落,那个段落会覆盖通配段落。Disallow: /private会同时挡住/private/、/private-page、/private123,范围比你想的宽。要只挡目录,写成Disallow: /private/。Allow: /private/public/并确认它比对应的Disallow更长。如果文件里还有Sitemap行,注意它只是给抓取方提供线索,不保证收录,也不影响Disallow的判断。
假设现象是“/private/目录被误封,其中/private/docs/需要被抓取”。最小修复试验可以这样安排:
robots-backup-日期.txt保存到本地,作为回退依据。Allow: /private/docs/,放在对应User-agent段落内,其他内容一字不动。/private/docs/guide和/private/other。如果测试结果与预期不符,先检查是不是Allow路径比Disallow路径短、或者被另一个User-agent段覆盖,而不是急着再改规则。
这是最容易判断错的一步。Disallow只阻止抓取,不阻止已收录页面继续出现在结果里,也不移除已有索引。如果试验目标是让某个页面从搜索结果消失,靠robots.txt是做不到的,需要改用页面级noindex(且该页面必须允许被抓取,否则抓取方读不到noindex)。
复查清单:
只有以上检查都通过,才把这条改动保留;任一项异常,用备份文件回退,重新设计单条试验。
选一个当前最明确的现象,按上面的四步写出你的第一条试验规则和预期测试地址,改完只测这两个地址,得到结果后再决定是否扩大修改范围。