判断robots.txt规则是否正常,核心是看两点:文件能否被公开访问,以及规则是否按你预期的方式限制了指定抓取工具。正常结果是文件返回200、内容为纯文本、规则能被目标爬虫读取并执行;异常结果则是404、403、返回HTML页面、语法错误导致整条规则失效,或者规则误封了本应允许的目录。区分方法不是凭感觉,而是用抓取工具的实际行为去验证。
在浏览器或命令行中请求 https://你的域名/robots.txt,观察返回状态和内容类型。正常情况应满足:状态码为200,正文是纯文本,第一行通常是 User-agent 声明,没有登录跳转、验证码或HTML标签。
常见异常及对应判断:
这一步只说明“文件可读”,还不能说明“规则正确”。
语法层面,重点检查三类问题。第一,User-agent 是否写对,比如写成 User-agent: Googlebot 与 User-agent: * 的作用范围不同,前者只针对该爬虫,后者针对未单独声明的其他爬虫。第二,Disallow 与 Allow 的路径是否以 / 开头,路径匹配是前缀匹配,Disallow: /admin 会同时挡住 /admin 和 /administrator。第三,是否误用了 Disallow: /,这会阻止整站抓取。
判断规则是否按预期生效,可以做一个对照测试:选一个你允许抓取的目录和一个你禁止抓取的目录,分别用同一爬虫身份请求。如果禁止目录仍被正常抓取,说明规则未生效;如果允许目录被拦截,说明规则范围过宽。这里要区分“可能原因”和“已定位原因”:规则未生效可能是语法错误,也可能是爬虫不支持该指令,不能只凭一个现象下结论。
文件内容正确,不等于爬虫一定遵守。复查时按以下步骤执行:
需要明确:robots.txt 的抓取限制不等于可靠的索引移除。即使禁止抓取,已收录的页面仍可能出现在搜索结果中,因为移除索引需要额外的机制。站点地图也不保证收录,它只是发现URL的辅助手段。HTTPS 同样不保证安全无漏洞或排名提升,这些属于不同层面的问题。
如果确认是文件不可访问,优先检查服务器配置、重写规则和访问权限,而不是反复修改规则内容。如果确认是语法错误,先修正 User-agent 分组和路径拼写,再重新测试。如果是规则误封,缩小 Disallow 范围,必要时用 Allow 放行更具体的路径。如果规则本身正确但抓取行为不符合预期,需要分别核查不同搜索引擎的支持情况,因为各家的指令支持和优先级并不完全一致。
假设一个场景:你写了 Disallow: /tmp,希望阻止临时目录被抓取,但日志显示该目录仍有大量请求。此时不要直接断定爬虫不遵守规则,先检查该爬虫是否在 User-agent 中单独声明、路径是否被其他 Allow 覆盖、以及文件是否真的返回了200。只有排除这些可能后,才考虑抓取工具本身的行为差异。
打开你的robots.txt,先确认返回状态和内容类型,再逐条核对 User-agent、Disallow、Allow 的路径,最后用一次实际抓取日志验证拦截是否发生。把这三步的结果记下来,就能区分“文件正常但规则异常”和“规则正常但抓取异常”这两种不同情况。