测试环境与线上环境的 robots.txt 对照,不能只看“两份文件写得像不像”,而要看它们是否服务于同一套抓取策略。常见误解是:测试环境的 robots.txt 可以随便写,只要线上正确就行。实际上,如果测试环境允许被抓取,或者测试环境的规则被同步到线上,都可能让搜索引擎看到不该看到的页面,或者屏蔽掉本该收录的线上内容。正确做法是:先明确两份文件各自的作用范围,再用逐行对照的方式检查差异,而不是直接复制。
测试环境通常包含未上线的页面、重复内容、临时参数或内部功能。线上环境则希望搜索引擎抓取正式内容、避开后台和重复页。两者的目标不同,规则自然不应相同。如果测试环境直接复制线上文件,可能把线上允许抓取的目录在测试环境也放开,导致测试页被收录;反过来,如果线上复制了测试环境的全站禁止规则,线上页面会整体无法被抓取。
另一个原因是 robots.txt 是按域名和路径生效的。测试环境往往使用独立域名或子域名,规则中的路径写法需要根据实际 URL 调整。直接照搬路径,可能出现规则匹配不到或误伤的情况。
时间和人手有限时,不必逐字读完两份文件。优先检查以下位置,通常能发现大部分问题:
User-agent 行:测试环境是否对所有爬虫都放开了,而线上只针对特定爬虫设置规则。Disallow 行:测试环境是否缺少对后台、搜索参数、临时目录的屏蔽。Allow 行:线上是否有例外放行规则,测试环境是否遗漏或写错路径。Sitemap 行:测试环境是否错误地指向了线上站点地图,或线上指向了测试域名。$ 结尾规则,这类规则容易在复制时被忽略。检查时把两份文件并排打开,逐行标记“仅测试有”“仅线上有”“两边都有但路径不同”。标记完成后,再判断每一处差异是否合理。
假设你手头有测试环境和线上环境的 robots.txt 各一份,可以按下面步骤处理:
这个步骤的适用条件是:两个环境使用不同的域名或子域名,且你能够分别访问它们的 robots.txt。如果测试环境根本不允许外部访问,那么测试环境的 robots.txt 对搜索引擎没有实际影响,重点应放在线上文件的正确性上。
判断依据不是“哪份文件更严格”,而是“哪份文件符合当前环境的抓取目标”。可以用一个简单的检查项来验证:
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除。即使测试环境写了 Disallow,已经抓取过的页面仍可能出现在搜索结果中,需要配合其他方式处理。站点地图也不保证收录,它只是辅助发现 URL 的途径。
如果只能先做一件事,优先检查线上 robots.txt 是否误屏蔽了重要目录,以及测试环境是否缺少对敏感路径的禁止规则。前者直接影响线上流量,后者可能造成测试内容外泄。Sitemap 地址写错、通配符规则遗漏这类问题,可以放在第二步处理。
下一步,打开两个环境的 robots.txt,用文本对比工具标出所有差异行,然后按“线上是否误伤、测试是否暴露”两个标准逐条判断,先改影响最大的那一处。