robots.txt 的写法只能表达“是否允许抓取”,不能表达“是否允许索引”。一条 Disallow 规则如果阻止了抓取,搜索引擎就无法读取页面内容,通常也就无法把它作为正常搜索结果展示;但这不等于页面被可靠地移除了索引。反过来,允许抓取也不代表页面一定会被索引。判断问题时,要把“抓取日志与抓取工具的报告”和“索引状态查询结果”分开看。
抓取指搜索引擎的爬虫请求了某个 URL,并读取了响应内容。索引指搜索引擎把该 URL 的内容处理后存入可供搜索调用的数据库。robots.txt 位于抓取层,它影响爬虫能否请求页面;索引还受页面质量、重复内容、规范标签、noindex 指令、外链与内部链接等因素影响。
因此,看到“已阻止抓取”时,不能直接推断“已从索引删除”。同样,看到“已抓取”也不能推断“已收录”。两个状态必须分别取证。
/robots.txt,找到与目标路径匹配的 User-agent 段和 Disallow 行;再用搜索引擎官方提供的 robots.txt 测试工具输入完整 URL 验证。结果说明:若显示被阻止,爬虫不会请求该 URL,索引状态很可能停留在旧快照或无法更新。<meta name="robots" content="noindex">,或响应头中的 X-Robots-Tag: noindex。结果说明:noindex 是索引层指令,即使抓取被允许,页面也可能被移出索引;它与 robots.txt 的作用不同,不能互相替代。如果页面在 robots.txt 阻止抓取之前已经被索引,搜索引擎可能保留旧索引一段时间,因为爬虫无法重新读取页面来确认最新状态。此时搜索结果里可能仍出现旧标题或旧摘要。要可靠移除索引,通常需要允许抓取并让页面返回 noindex,或者让页面返回 404、410 等状态,具体取决于页面是否还需要保留。
还要注意:robots.txt 中写 Disallow: / 会阻止整站抓取,但不会自动删除已有索引。若同时用 noindex,而爬虫又被 robots.txt 挡住,爬虫读不到 noindex,移除效果会被拖延。
第一步,明确目标是“不让抓取”还是“不让索引”。只想节省抓取资源、不介意页面被索引时,可以用 robots.txt;想让页面从搜索结果消失时,优先考虑 noindex 或合适的 HTTP 状态码。第二步,检查规则是否误伤 CSS、JS 或重要目录,避免因抓取受限影响页面理解。第三步,分别验证抓取层和索引层:抓取层看 robots.txt 测试与日志,索引层看 URL 检查结果与索引状态报告。第四步,修改后持续观察,不要期待立即生效;不同搜索引擎的处理速度和支持情况需要分别核查。
先取一个具体 URL,按上面的清单逐项记录:robots.txt 是否阻止、页面是否有 noindex、日志是否有抓取、索引查询显示什么。四项结果对齐后,再决定是改 robots.txt、加 noindex,还是处理抓取与内链问题。这样能把“抓取”和“索引”两个层面分开,避免用一条规则解决两个不同的问题。