robots.txt写法:改版或迁移时应核对什么?先查旧规则是否误伤新路径

📍 WDQWDWQD987AAAAA:216.73.216.136
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /2012f448d813.html
📄

robots.txt写法:改版或迁移时应核对什么?先查旧规则是否误伤新路径

改版或迁移时核对 robots.txt,核心是确认旧规则没有继续拦住新 URL、没有把整站或关键目录误封,同时确认新规则确实允许抓取。最容易出错的一步,是把旧站为屏蔽测试环境、旧目录或参数页写的 Disallow 原样带到新站,而新站恰好沿用了相同路径。判断方法不是看文件是否存在,而是用具体 URL 逐条比对规则,再结合抓取日志和抓取测试验证。

准备阶段:先冻结旧文件并列出路径变化

迁移开始前,先把旧站 robots.txt 完整保存下来,标注每一条规则的原始用途。然后整理一张路径对照表,至少包含三类:保持不变的上线路径、已经更换的路径、只存在于旧站的废弃路径。没有这张表,后面无法判断某条 Disallow 是保护还是误伤。

核对时重点关注这些写法:

实施阶段:按新站结构重写,而不是照搬

新文件的写法要围绕新站真实存在的目录来写。假设旧站用 Disallow: /tmp/ 屏蔽临时页,新站已取消该目录,这条规则就该删除;如果新站仍有测试目录,则应保留并确认它不会被外链或站点地图暴露。用户代理分组要分开写,针对特定爬虫的规则不要和 User-agent: * 混在同一组里。

站点地图声明可以写,但站点地图不保证收录,它只是提交候选 URL 的渠道之一。robots.txt 中的抓取限制也不等于可靠的索引移除:被 Disallow 的 URL 仍可能因为外部链接出现在搜索结果中,只是摘要信息可能受限。若目标是让页面从搜索结果消失,robots.txt 不是合适手段,应使用页面级 noindex,并确保该页面本身允许被抓取,否则 noindex 无法被读到。

验证阶段:用真实 URL 逐条测试,而不是只看文件

这是本题最关键的一步。把新站首页、栏目页、详情页、分页、参数页、静态资源各取一个真实 URL,逐条套用规则,判断结果是允许还是禁止。可以手工推导,也可以使用搜索引擎提供的抓取测试工具,但不同搜索引擎对 robots.txt 的支持细节需要分别核查,不能用一个工具的结果推断所有爬虫的行为。

验证时至少检查:

  1. 新站重要栏目是否全部允许抓取,有没有被旧目录规则误伤。
  2. 不该被抓取的路径是否确实禁止,例如后台、购物车、无限筛选参数。
  3. robots.txt 本身是否返回 200 状态码,内容类型是否为纯文本。
  4. 抓取日志中是否出现大量 403、404 或对已禁止路径的请求,用来反推规则与实际行为是否一致。

如果验证发现某个重要 URL 被禁止,先定位是哪一条规则命中的,再决定修改规则还是调整 URL 结构。不要为了通过测试而直接删除全部限制,这会把后台和参数页一并放开。

维护阶段:迁移完成后持续观察抓取情况

上线后一段时间内,定期查看抓取统计和服务器日志,确认允许抓取的目录请求量正常、被禁止目录没有异常增长。每次新增目录、修改 URL 规则或调整参数策略时,同步复查 robots.txt,避免新路径落进旧规则的匹配范围。把 robots.txt 纳入改版检查清单,和重定向、站点地图、canonical 一起核对,而不是上线后才补看。

下一步:打开新站 robots.txt,取首页和一个核心栏目 URL,逐条套用现有规则,确认两者都允许抓取;若发现禁止,记录命中的规则行再修改。

图1 图2

nginx