确认robots.txt配置实际生效,不能只看文件能否打开,而要用真实抓取工具请求目标URL,检查返回状态与抓取结果是否符合预期。假设你刚把Disallow: /private/写入robots.txt,想确认它是否真的阻止了抓取,正确做法是抓取https://example.com/private/test,而不是只抓取https://example.com/robots.txt。前者验证规则效果,后者只验证文件可访问。
确认生效前,先明确你用的是哪种方案,因为判断标准不同。
两种方案都容易犯同一个错误:把“robots.txt返回200”当成“规则已生效”。文件可访问只说明服务器能返回它,不说明里面的规则被正确解析。若文件放在子目录、返回404或返回HTML登录页,规则都不会按预期工作。
最直接的核查方式是使用搜索引擎官方提供的robots.txt测试工具,或使用支持自定义User-Agent的抓取命令。以下步骤以假设站点example.com为例:
https://example.com/private/test。Googlebot。不要用浏览器UA代替,因为不同UA可能匹配不同规则组。https://example.com/public/page,确认它没有被误伤。curl检查文件本身的状态码和内容类型:curl -I https://example.com/robots.txt,确认返回200且不是重定向到登录页。如果测试结果显示“已阻止”,但实际抓取日志里仍出现该路径,可能原因包括:爬虫缓存了旧规则、规则写在错误的User-Agent组下、路径大小写不匹配,或该爬虫根本不支持你使用的语法。此时不要断言“规则一定失效”,而应分别检查这几项。
下面列出确认生效时最容易误判的情况:
User-agent: Googlebot下,用其他UA测试可能得到不同结果。Disallow: /private会同时匹配/private和/privateabc;若只想限制目录,应写Disallow: /private/。*和$并非所有爬虫都支持,需分别核查目标搜索引擎的文档。确认规则生效后,下一步不是立刻提交站点地图,而是检查站点地图中是否仍包含被阻止的URL。站点地图不保证收录,但若其中混入被robots.txt阻止的地址,会浪费抓取预算并增加误判。把站点地图里的URL逐条与robots.txt规则比对,移除或调整冲突项,再观察服务器日志中目标爬虫的请求变化。若日志中该路径请求减少,说明规则正在起作用;若请求量不变,回到抓取测试步骤,检查UA匹配和缓存问题。