写 robots.txt 时,最容易犯的错误是把“禁止抓取”当成“禁止收录”。两者不是一回事:抓取是搜索引擎爬虫来不来读取你的 URL,索引是搜索引擎把读取到的内容处理后放进自己的结果库。假设一个例子:站点有一个测试页 /test/,你在 robots.txt 里写了 Disallow: /test/,几天后搜索站点名加测试页标题,仍可能看到它。这并不矛盾——页面可能在被禁止抓取之前就已经被抓取并索引,或者通过外链、站点地图等信号被发现了 URL,只是没有重新抓取内容。判断时先问“爬虫有没有来过”,再问“结果库里有没有这条记录”,不要用一个现象直接推断另一个。
robots.txt 是放在站点根目录下的纯文本文件,用 User-agent、Allow、Disallow 等指令告诉爬虫哪些路径可以抓、哪些不建议抓。它约束的是抓取行为,不是索引状态。一个 URL 即使被 Disallow,只要搜索引擎此前已经抓取过,它仍可能保留在索引里,只是摘要和快照可能变旧。反过来,一个页面被抓取了,也不代表一定会被索引,搜索引擎还要判断内容质量、重复度、是否值得展示等。因此,robots.txt 的抓取限制不等于可靠的索引移除;真正想让页面从结果中消失,通常要配合页面级 noindex(且该页面必须允许被抓取,否则 noindex 也读不到)或使用搜索引擎提供的移除工具。
假设你接手一个已有项目,发现某个不想被收录的页面仍出现在结果里。按下面顺序查,能避免把原因搞错:
下面这些错误会直接影响你对“抓取”和“索引”的判断:
Disallow: / 会挡住整站抓取,已索引页面可能长期得不到更新,但不会自动消失。/Test/ 和 /test/ 可能结果不同,要按实际 URL 核对。一个可执行的检查短例:假设 /old-page/ 要下线,你希望它从结果中消失。第一步,确认页面返回 404 或 410;第二步,确认 robots.txt 没有误挡该路径,否则爬虫无法读到状态变化;第三步,在搜索引擎的抓取分析工具里查看该 URL 的抓取和索引记录;第四步,若仍显示索引,按该搜索引擎的移除流程提交。若你只是不想让它被抓,但仍希望它可被访问,那应使用 noindex 而不是 Disallow,并确保页面可被抓取。
robots.txt 的指令支持程度、URL 检查工具、移除请求入口,在不同搜索引擎之间并不完全一致。对某个搜索引擎有效的 noindex 处理,不必然在另一个搜索引擎产生相同结果;不同搜索引擎支持情况须分别核查。核查时以各搜索引擎官方文档为准,不要仅凭第三方工具或经验帖下结论。写 robots.txt 前,先明确目标:是控制抓取频率、屏蔽无关路径,还是阻止索引。目标不同,写法不同,验证方式也不同。
下一步,把你当前 robots.txt 里的每条 Disallow 逐条对应到实际 URL,再用日志和 URL 检查工具确认这些 URL 的抓取与索引状态是否一致。发现“禁止抓取却仍有索引”的条目,按上面的顺序判断是历史抓取、外部发现还是配置误写,再决定改用 noindex、删除页面还是提交移除。