检查robots文件的前后环节依赖,核心是把它放回抓取链路中看:前一个环节是爬虫能否取到robots.txt、能否正确解析其中的规则;后一个环节是规则生效后,URL是否被允许抓取、是否仍能被索引。只盯着文件内容本身,往往查不出问题,因为依赖断在取回、解析或后续索引任一步,表现都会不一样。
实际工作中常见两种做法。方案A是直接修改robots.txt,用Disallow限制抓取;方案B是保留抓取、用页面级指令或状态码控制索引。两者的适用条件不同:
按链路顺序逐项核对,每项都给出查什么、怎么查、结果说明什么。
查什么:文件是否返回200状态码,内容是否为纯文本,是否被重定向、登录墙或CDN规则拦截。
怎么查:用命令行或抓取工具请求根目录下的robots.txt,观察状态码和响应头。
结果说明:返回200且内容完整,说明取回环节正常;返回301/302要确认最终地址是否仍是同一文件;返回403/404或超时,说明爬虫可能取不到规则,此时Disallow不会按预期生效——取不到文件时,爬虫通常按允许抓取处理。
查什么:User-agent分组是否对应目标爬虫,Disallow与Allow的路径是否写对,通配符和结尾符号是否用错。
怎么查:逐行读规则,确认每个User-agent块只作用于声明的爬虫;用不同爬虫标识分别测试同一URL。
结果说明:如果规则写在User-agent: *下,而目标爬虫有独立分组,则*组规则对它不生效。路径写错一个字符,就会从“禁止”变成“允许”。
查什么:站点地图里列出的URL,是否正好被robots.txt禁止抓取。
怎么查:导出站点地图中的URL列表,与Disallow规则逐条比对。
结果说明:如果站点地图提交了被Disallow的URL,等于向爬虫推荐了它取不到的内容,两者依赖关系矛盾。另外要记住,站点地图只是提示,提交它不保证收录。
查什么:被Disallow的URL,是否仍出现在搜索结果中。
怎么查:用站内搜索或搜索指令查看该URL是否被索引,并对比页面当前状态。
结果说明:出现“已抓取但被robots阻止”或仍显示旧摘要,说明抓取限制没有完成索引移除。这属于前后环节依赖断裂:抓取被挡,但索引层没有同步清除。
查什么:robots.txt是否只在HTTPS可访问,HTTP版本是否重定向,证书是否有效。
怎么查:分别请求HTTP和HTTPS两个版本的robots.txt,检查证书链和重定向终点。
结果说明:证书错误或重定向循环会让爬虫取不到文件。需要说明的是,启用HTTPS本身不保证站点无漏洞,也不直接等于排名提升,它只是链路可用的前提之一。
假设某站用Disallow: /private/阻止抓取,但/private/下某页面仍被外部链接指向并出现在结果里。按上面清单排查:文件返回200、语法正确、站点地图未收录该路径,问题就落在第4项——抓取被阻止,索引未移除。此时可改用页面级noindex(需允许抓取才能被读到),或对该路径返回合适的状态码,而不是继续加Disallow规则。
选一个你怀疑受robots影响的URL,从第1项查到第4项,记录每一步的实际返回结果。只有确认断点在哪一环,再决定是改规则、改页面指令还是改状态码。