网站收录

robots.txt 挡了抓取,页面为什么还在索引里:把抓取屏蔽和索引屏蔽分开用

很多站点把 robots.txt 和 noindex 当成同一个开关,结果出现“屏蔽了却还在索引里”或“想移除却一直移除不掉”的情况。本文从抓取屏蔽与索引屏蔽的区别出发,说明 robots.txt、meta robots、X-Robots-Tag 各自的生效条件与冲突处理顺序,以及列表页、参数页、临时下线等场景该用哪一个,并附一份自查清单。

网站收录

robots.txt 挡了抓取,页面为什么还在索引里:把抓取屏蔽和索引屏蔽分开用

经常有人问:已经在 robots.txt 里 Disallow 了,为什么搜索里还能搜到那个页面?反过来也常见:明明加了 noindex,过了一两个月还在索引里。这两件事看着像同一个问题,其实分别卡在两个不同的环节上。把抓取屏蔽和索引屏蔽当成一个开关,是很多收录问题的起点。

抓取屏蔽和索引屏蔽,是两个不同层面的动作

搜索引擎处理一个 URL 大致分几步:发现、抓取、索引、展示。robots.txt 管的是“能不能来抓”,属于抓取层;noindex(meta robots 或 X-Robots-Tag)管的是“抓到了要不要放进索引”,属于索引层。两者的生效前提完全不一样。

  • robots.txt Disallow:阻止爬虫请求该 URL。爬虫不会拿到页面内容,因此也看不到页面上写的 noindex。
  • noindex:必须等爬虫真正抓取到页面、读到这行指令之后才生效。如果页面同时被 robots.txt 挡住,noindex 就永远读不到。

这就是最常见的矛盾:想移除一个页面,于是先 Disallow,再补 noindex。结果 robots.txt 挡住了抓取,noindex 没机会被读到,页面既抓不了也去不掉,只能一直挂在索引里(通常表现为无摘要或旧摘要)。

为什么被 robots.txt 挡住的 URL 还可能出现在索引里

爬虫虽然不能抓取页面,但 URL 本身可以通过外链、sitemap、历史记录等途径被发现。在没有页面内容可判断的情况下,搜索引擎有时会把这个 URL 保留在索引中,只是不展示摘要,或者沿用之前的快照。这不是“规则失效”,而是抓取层和索引层各管各的。

想让一个页面彻底离开索引,正确顺序通常是:先允许抓取,让 noindex 能被读到;确认页面已从索引移除后,再决定要不要用 robots.txt 挡抓取。

三种指令的生效位置和优先级

  1. robots.txt:站点级,按路径匹配,控制抓取。对已抓取内容的索引状态没有直接作用。
  2. meta robots:写在 HTML 的 head 里,页面级,控制索引和链接跟随。需要页面被抓到才生效。
  3. X-Robots-Tag:写在 HTTP 响应头里,适合非 HTML 资源(PDF、图片、视频),也常用于整站或目录级统一设置。生效条件同样是请求能到达。

当几处指令同时存在且互相冲突时,一般以更严格的为准:一处说 noindex,另一处没提,通常按 noindex 处理。但前提是这些指令能被读到。被 robots.txt 挡住的路径,后面的 meta 和 header 指令都无从谈起。

不同场景该怎么选

不想让某个目录被抓,但也不介意它是否存在

比如后台、测试环境、内部搜索接口,用 robots.txt 屏蔽抓取就够了。这些 URL 本身不太会被外链引用,留在索引里的概率低,重点是别浪费抓取资源。

想让一个已收录页面彻底消失

不要先上 Disallow。先确认页面可被抓取,加上 noindex,等索引移除后再考虑是否收回抓取权限。如果是整站迁移或大批量下线,配合 301 或 410 处理更直接。

列表页、筛选页不想进索引,但希望链接被跟随

这种情况用 noindex, follow,而不是 robots.txt。Disallow 会同时切断链接的传递,反而影响下层页面的发现。

参数页、跟踪码页面

先做 URL 归一和 canonical,再考虑是否加 noindex。直接 Disallow 容易让同一页面的其他变体继续被索引,看起来像“屏蔽没生效”。

自查清单

  • 被屏蔽的路径,是否同时写了 noindex?如果是,先理清目的:要的是不抓取,还是不索引。
  • noindex 是否写在可被抓取的页面上?用抓取工具确认返回的 HTML 或响应头里确实带上了指令。
  • robots.txt 是否误挡了 CSS、JS 等渲染所需资源?这会影响页面内容判断,间接影响索引质量。
  • 检查 X-Robots-Tag 是否在某层配置里被批量加上,覆盖了单页设置。
  • 移除索引需要时间,观察周期按周计,不要一天之内反复改指令。

抓取和索引是两件事,处理顺序错了,越改越乱。先想清楚目标是不被抓、不被索引,还是不被展示,再选对应的工具,比同时上多个指令稳妥得多。