当功能开关让同一路径在不同时间返回不同内容时,robots.txt 的版本状态必须和开关状态一起记录,否则团队会拿不同前提下的截图互相争论。建议把每次开关变更当作一次配置发布:先确定该路径当前是否允许抓取,再按开关状态分别保存 robots.txt 响应、开关取值和生效时间,用同一份变更单让开发、SEO、运维核对。
功能开关可能只影响页面渲染,也可能同时改变路径结构、查询参数或返回状态码。只有后者才会让 robots.txt 的版本记录变得必要。区分方法很直接:如果开关关闭时页面仍返回 200 且内容可抓取,只是模块显隐不同,那么 robots.txt 不需要为这次开关单独留版本;如果开关会切换到维护页、返回 503、把内容挪到新路径,或者给同一路径加上不同参数,就必须记录 robots.txt 在该状态下的实际响应。
一个可核对的证据组合是:开关名称与取值、该状态下的页面响应码、robots.txt 中与这些路径相关的规则行、抓取时间。四者缺一,后面的复查就会退回到“我记得当时是关着的”这种无法验证的说法。
条件一:开关只影响前端渲染,路径与状态码不变。这时 robots.txt 版本不需要跟随开关走。记录重点放在开关取值和页面可见内容的差异上,robots.txt 只需保留最近一次真实修改规则的版本。若有人误以为“页面变了所以要改 robots.txt”,可以用同一路径在开关开、关两种状态下的响应码对比来结束分歧。
条件二:开关会改变路径、参数或可抓取性。这时 robots.txt 必须按开关状态分别留档。做法是给每次开关变更建立一条记录,字段至少包括:开关名、取值、生效时间、受影响的路径模式、该状态下 robots.txt 的完整响应、抓取时使用的 User-Agent。这样当开关回滚时,你能立刻找出对应的 robots.txt 版本,而不是从一堆历史文件里猜。
两种条件的共同前提是:抓取限制不等于可靠的索引移除。即使 robots.txt 禁止了某路径,已经收录的页面也可能继续出现在结果中,因此版本记录解决的是“当时规则是什么”,不是“页面一定被移除”。
多角色对同一事实理解不一致时,最有效的动作是建一张变更记录表,而不是继续在群里争论。表里每行对应一次开关变更,列包括开关取值、页面响应码、robots.txt 版本标识、记录时间、记录人。版本标识不必用复杂哈希,用抓取时间加响应内容的简短摘要即可,但必须是可重新取回的原始内容,不能只写“已检查”。
实施动作可以这样安排:开关变更前,先抓取当前 robots.txt 并保存;变更后,在开关生效的状态下再抓取一次,和页面响应一起存档。如果两次 robots.txt 内容相同,就标注“本次开关未影响抓取规则”;如果不同,则把差异行单独列出。这个动作的结果会直接决定下一步:相同则后续只需复查页面状态,不同则必须把 robots.txt 版本纳入回滚清单。
假设一个场景:某路径在开关关闭时返回 200,开启后跳转到带参数的维护路径。若记录里只有“页面变了”,回滚时就无法判断 robots.txt 是否需要同步回退。若记录里保存了两种状态下的完整响应,回滚动作就能一次对齐规则和开关,减少二次排查。
把版本状态和开关状态绑定记录,并在每次回滚时按同一张表核对,才能让“当时到底允许不允许抓取”变成一个可以复查的事实,而不是依赖记忆的结论。