与开发人员交接 robots.txt 问题,核心不是把文件发过去说“帮忙改一下”,而是把现象、目标、影响范围和验收标准写成一份可执行的变更说明。开发人员需要知道改哪一行、为什么改、改完怎么验证,以及哪些行为不能发生。交接越具体,返工越少。
robots.txt 相关的需求通常分三种,交接方式完全不同。第一种是放行或屏蔽某个目录,属于规则变更;第二种是线上 robots.txt 返回了错误状态码或错误内容,属于故障排查;第三种是抓取限制与索引移除混淆,属于目标澄清。交接前先判断自己属于哪一类,否则开发人员会按字面改文件,却解决不了你真正的问题。
要特别说明一点:robots.txt 的抓取限制不等于可靠的索引移除。屏蔽抓取只能阻止爬虫继续访问,已经收录的页面不会因此自动消失。如果目标是让页面从搜索结果中移除,需要走对应的移除工具或页面级 noindex,而 noindex 又要求页面能被抓取到,这两者存在配合关系。交接时必须把目标写清楚,避免开发人员以为加了 Disallow 就完成了全部工作。
假设这样一个场景:某站点改版后,测试环境的 /beta/ 目录被意外放到了线上,你需要阻止搜索引擎抓取,同时保留正式目录正常访问。以下是一份假设的交接模板,字段可根据实际情况增减。
Disallow: /beta/,放在对应 User-agent 分组下。Disallow: /,不要误删原有规则,不要改动文件编码和换行格式。这份模板的价值在于把“改什么”和“怎么算改对了”分开写。开发人员最常返工的原因不是不会写规则,而是不知道验收边界,比如以为只要文件能打开就算完成。
第一类是把目标写成手段。“加一条 Disallow”是手段,不是目标。目标应该是“阻止抓取 /beta/”,这样开发人员才有判断空间。如果只写手段,一旦规则位置放错,双方都发现不了。
第二类是忽略 User-agent 分组。robots.txt 中规则归属于某个 User-agent 分组,写在错误分组下可能完全不生效。交接时要明确是针对全部爬虫还是特定爬虫,并给出对应分组的上下文,而不是只给一行规则。
第三类是混淆抓取限制与索引状态。前面已经提到,Disallow 不保证页面从索引中消失。如果交接需求里同时包含“不要被抓取”和“不要被收录”,要分别说明各自依赖的机制,并确认两者是否冲突。
第四类是没有区分测试环境与线上环境。测试环境的 robots.txt 往往整体屏蔽抓取,直接复制到线上会造成全站不可抓取。交接时要写明目标环境,并提醒开发人员核对部署路径。
开发完成后不要只看代码 diff,要按下面的顺序实际核对。
需要提醒的是,站点地图不保证收录,它只是提交候选 URL 的渠道。把 URL 放进站点地图,和该 URL 是否被索引是两件事。同样,HTTPS 也不保证安全无漏洞或排名提升,它只是传输层的一个条件。这些概念在交接时如果被混在一起,会导致验收标准失焦。
不同搜索引擎对 robots.txt 的支持细节可能存在差异,涉及具体规则时,应分别查阅对应搜索引擎的官方文档,而不是假设所有爬虫行为一致。交接说明里可以附上你依据的文档链接或规则来源,方便开发人员自行核对。
把上面那份交接模板保存成团队内的固定格式,下次提 robots.txt 需求时直接填字段,而不是重新组织语言。填完后自己先按验收标准走一遍,确认每条都能被验证,再发给开发人员。