检查 robots协议 的前后环节依赖,核心是确认一条链路:页面是否可被抓取、抓取后是否允许索引、索引后是否被正确呈现。不能只看 robots.txt 本身,因为它的作用只发生在抓取阶段;即使 robots.txt 允许抓取,后面仍可能被 meta robots、X-Robots-Tag、canonical 或登录墙拦住。实际操作中,应把 robots.txt 当作链路起点,而不是终点。
robots.txt 是放在站点根目录下的文本文件,用来告诉爬虫哪些路径可以抓取、哪些不可以。它约束的是抓取行为,不直接控制索引。一个常见误解是:把某路径写进 Disallow,页面就会从搜索结果消失。事实并非如此。Disallow 只阻止爬虫抓取该路径,如果页面已经被索引,它可能仍会以无摘要或旧摘要形式出现。
因此,检查依赖时第一步是确认:当前问题是“抓不到”还是“抓到了但不索引”。这两种情况的后续环节完全不同。
robots.txt 允许抓取,不代表页面一定允许索引。页面级还有两类常见控制:HTML 中的 <meta name="robots">,以及 HTTP 响应头中的 X-Robots-Tag。它们可以分别设置 noindex、nofollow 等值。当 robots.txt 与页面级指令冲突时,要分情况判断:
检查时不要只打开 robots.txt 看一眼就结束。应把目标 URL 的 HTTP 响应头、HTML head 中的 robots 指令、canonical 链接一起对照。这三项与 robots.txt 构成前后依赖:robots.txt 决定爬虫能否到达页面,响应头和 HTML 决定到达后是否允许索引,canonical 决定索引归到哪个 URL。
下面是一组可以实际执行的检查步骤。假设要检查的是 https://example.com/page-a,示例仅用于说明方法。
https://example.com/robots.txt,找到与目标爬虫匹配的 User-agent 段,确认目标路径没有被 Disallow 规则覆盖。注意规则按前缀匹配,Disallow: /page 会同时影响 /page-a 和 /page-b。curl -I https://example.com/page-a。检查是否出现 X-Robots-Tag: noindex,以及状态码是否为 200。若返回 301 或 302,要先跟随跳转看最终 URL 的指令。<meta name="robots" content="noindex"> 或类似组合值。判断结果时,如果 robots.txt 放行、响应头无 noindex、HTML 无 noindex、canonical 自指,那么抓取与索引的前置依赖基本打通。接下来若仍未出现在搜索结果中,问题更可能在内容质量、重复度、链接发现或抓取预算等后续环节,而不是 robots协议 本身。
复查阶段要回到链路整体,而不是重复看同一个文件。常见遗漏包括:
这些点的共同特征是:它们不在 robots.txt 单文件内部,而在它与响应头、HTML、canonical、站点地图、主机版本的衔接处。检查依赖就是检查这些衔接处是否一致。
如果这是第一次接触这个问题,建议从一条最小验证链开始:选一个具体 URL,依次记录 robots.txt 是否放行、HTTP 状态码、X-Robots-Tag、meta robots、canonical 五项结果。五项一致且都指向“可抓取、可索引”时,再去看搜索表现。若其中任一项不一致,先修那一项,再复查整条链,不要同时改动多个环节,否则无法判断是哪一步起了作用。