确认 robots.txt 配置是否生效,不能只看文件能否打开,而要用“抓取工具结果 + 服务器访问日志 + HTTP 状态码”三方面交叉验证。只看文件内容,无法判断搜索引擎是否真的读取了新版本,也无法判断某条规则是否被正确解析。
robots.txt 必须放在目标站点的根目录下,例如 https://example.com/robots.txt,且返回 HTTP 200。若返回 404,搜索引擎会认为没有限制规则;若返回 5xx,搜索引擎可能暂停抓取,而不是当成“允许全部”。检查时可用 curl -I https://example.com/robots.txt 查看状态码和内容类型,再用浏览器直接打开对比内容是否一致。
语法层面重点看三处:User-agent 是否写成了目标爬虫可识别的名称;Disallow 与 Allow 的路径是否以斜杠开头;是否误用了 Disallow: / 却期望只屏蔽某个目录。规则不区分大小写的地方和区分大小写的地方要按实际路径核对,路径末尾是否带斜杠也会影响匹配范围。
主流搜索引擎的站长平台通常提供 robots.txt 测试或抓取分析功能,但界面和名称会变化,应以你当前登录后台看到的入口为准。测试时不要只输入首页,要输入你真正想限制或放行的具体 URL,例如 https://example.com/private/page.html,观察工具给出的判断是“允许”还是“被阻止”。
如果工具显示“允许”,而日志里该 URL 仍被大量抓取,可能原因包括:规则尚未被重新抓取、爬虫使用了缓存的旧版本、该 URL 被其他规则放行,或者抓取来自你不希望限制的其他爬虫。此时应分别核查,而不是直接断定配置无效。
日志是最终证据。在访问日志中筛选目标爬虫的 User-agent,观察它请求 /robots.txt 的时间、返回状态码,以及之后是否继续请求被 Disallow 的路径。若 robots.txt 返回 200,但被禁止的路径仍出现大量 200 请求,说明限制没有按预期生效,需要回到规则匹配和缓存问题排查。
另一个有效信号是状态码变化:被禁止抓取的 URL 通常不应再出现新的成功抓取记录;如果出现 403、429 或 5xx,那是服务器层面的拦截,不是 robots.txt 的结果。把这两类现象分开,才能定位真正原因。
假设你新增了 Disallow: /tmp/,测试工具显示该目录被阻止,但日志中仍出现 /tmp/a.html 的抓取记录。此时先确认日志时间是否在规则更新之前,再确认该请求是否来自同一爬虫,最后检查是否有 Allow 规则覆盖了它。只有排除这些条件后,才能判断配置确实未生效。
下一步:选一个你真正想限制的 URL,用当前站长平台的抓取测试跑一遍,再到服务器日志中查同一 URL 的最近请求记录,把两边的结果对齐后再决定是否修改规则。