判断 robots txt 问题属于哪一层,关键看现象发生在“文件能否被取回”“规则能否被解析”“规则是否命中目标 URL”还是“搜索引擎是否按规则执行”这四个环节。下面用一个假设例子说明如何逐层收集证据并定位原因。
假设某站点管理员发现,自己负责的几个内容页在搜索结果中看不到了,同时 robots.txt 最近被改动过。此时不要直接断定“就是 robots.txt 屏蔽了页面”,因为页面消失可能由多种原因造成:服务器返回错误、页面被设成 noindex、robots.txt 禁止抓取、搜索引擎尚未重新处理,或者页面本身质量变化。要定位层级,需要把“文件层”和“页面层”的证据分开收集。
这一层只回答一个问题:搜索引擎的抓取程序能不能拿到 robots.txt 文件本身。检查方法如下:
https://你的域名/robots.txt,确认返回的是 200 状态而不是 404、403 或 5xx。如果这一层就失败,问题属于“文件可访问性层”,与规则写得好不好无关。常见错误是:把 robots.txt 放错目录、服务器对爬虫返回 403、或 CDN 缓存了错误版本。判断结果很直接——文件取不回,后面所有规则分析都失去意义。
文件能取回后,下一步看规则是否合法。robots.txt 使用简单的字段结构,常见字段包括 User-agent、Disallow、Allow、Sitemap。这一层要检查:
User-agent 是否单独成段,多个爬虫名不要挤在同一行。Disallow 和 Allow 的值是否以 / 开头,路径是否写对。Disallow 写成 Disalow,这条规则会被忽略。# 开头,且没有把注释混进路径值。如果语法有误,问题属于“解析层”。此时不同搜索引擎的处理方式可能不同:有的忽略错误行继续读取其余规则,有的可能放弃部分规则。因此不能用一个搜索引擎的表现推断另一个。要分别核查目标搜索引擎实际读取到的规则内容。
文件正常、语法正常,仍可能因为规则匹配问题导致目标页面被误伤。这一层需要把具体 URL 拿出来逐条比对。假设要检查的页面是 /article/seo-guide,而文件里写了 Disallow: /article/,那么该页面确实会被禁止抓取。如果写的是 Disallow: /article(没有结尾斜杠),匹配范围可能更宽,也可能因搜索引擎实现差异而不同。
判断方法:
Disallow 和 Allow 规则,看哪一条最先匹配、哪一条更具体。Allow 通常用于在较宽的 Disallow 中开一个口子,但具体优先级要看搜索引擎支持情况。如果规则命中了不该屏蔽的页面,问题属于“规则匹配层”。常见错误是用过宽的目录屏蔽,把本应被抓取的子目录一起挡掉。
即使 robots.txt 写对,也不代表页面一定会被收录或移除。robots.txt 限制的是抓取,不是索引。一个页面被 Disallow 后,搜索引擎可能仍保留已有的索引信息,也可能因为无法抓取而逐渐调整展示。反过来,放开抓取也不保证页面会被收录。
这一层的检查重点:
如果前面三层都正常,而页面仍未按预期出现,问题可能属于“索引与执行层”,需要继续排查页面质量、重复内容、服务器稳定性等因素,而不是只盯着 robots.txt。
遇到具体问题时,按下面顺序走,可以避免在错误层级上浪费时间:
robots.txt,确认状态码和内容正确。下一步建议:选一个当前有疑问的 URL,按上述四层各记录一条证据,再判断问题停在哪一层。