要取得可复查的状态证据,关键不是把规则写得多复杂,而是让每一次 robots.txt 变更都留下“谁改了什么、依据是什么、改后如何验证”的记录。具体做法是:把 robots.txt 当作受版本控制的配置文件,每次修改前先抓取线上原文并留档,修改后分别验证语法、抓取行为和实际返回内容,最后把验证结果与变更说明一起归档。这样多人协作时,下一位接手者能直接看到当前状态和判断依据,而不是靠口头描述猜测。
很多人直接打开编辑器改文件,改完就发布,结果出了问题无法判断是本次改动导致还是原本就存在。要避免这种情况,改动前应完成三件事。
Content-Type。这是后续对比的基线。这一步的产出是一份基线快照。它让“改坏了”和“本来就这样”可以被区分开,是后续所有复查的前提。
robots.txt 的基本结构是若干条记录,每条记录由 User-agent 开头,后跟若干 Allow 或 Disallow 规则。写法上有几个容易引发返工的点。
第一,User-agent 与规则之间不要插入其他记录,空行表示一条记录的结束。第二,Disallow 后面为空表示允许抓取全部,写成 Disallow: / 才是禁止全部。第三,路径区分大小写,/Admin 和 /admin 在多数实现中不是同一条规则。第四,注释用 # 开头,但注释不能写在规则值中间。第五,通配符和结尾匹配符号的支持程度因抓取方而异,使用前应针对目标抓取方分别核查,不要假设所有抓取方行为一致。
一个可执行的短例子如下,仅作语法示意,不代表任何真实站点:
User-agent: *
Disallow: /tmp/
Allow: /tmp/public/
这段写法表达的是禁止抓取 /tmp/ 下内容,但放行其中的 /tmp/public/。要注意,更具体的 Allow 是否覆盖较宽的 Disallow,取决于抓取方对规则优先级的实现,因此这属于需要实测确认的项,不能凭直觉断言。
验证要分层做,单看文件内容通过不算完成。
把每一步的结果写成可复查的证据:时间、执行人、命令或操作方式、原始输出。判断标准是——另一个人不看聊天记录,只读这份证据,也能得出同样的结论。如果做不到,说明证据还不完整。
robots.txt 的限制只作用于抓取行为,它不等于可靠的索引移除。已经收录的页面不会因为新增一条 Disallow 就自动消失,这一点必须在交付说明里写清楚,否则容易产生错误预期。同理,站点地图提交不保证收录,HTTPS 也不保证安全无漏洞或排名提升,这些都不能当作 robots.txt 变更的替代手段。
维护时建议把每次变更做成一条记录,包含:变更原因、变更前后的完整内容、验证结果、生效时间、复查时间。若多人协作,规则中涉及具体抓取方的部分应注明依据来源。历史规则或已废弃的写法不要描述成当前仍然有效,需要时用当时的存档说明,并附上现在的核查方法。
下一步可以直接做一件事:把当前线上 robots.txt 抓取下来,连同这次验证的四项结果整理成一份变更记录,作为下一次修改的基线。这样每次改动都有对照,返工自然会减少。