网站收录

robots.txt 挡住抓取后,noindex 信号也一起失效了

清理收录时常有人同时用 robots.txt 屏蔽和页面 noindex,结果两把锁互相打架:抓取被挡住,退出索引的信号送不出去,URL 反而长期留在搜索结果里。本文区分抓取与索引两道工序,按不同目的给出工具选择顺序和一份排查清单。

网站收录

robots.txt 挡住抓取后,noindex 信号也一起失效了

清理收录时,不少站点习惯做两件事:一边在 robots.txt 里屏蔽某个目录,一边在页面上加 noindex。看着像双保险,实际常常互相打架——抓取一旦被挡住,noindex 这个信号根本送不出去。

抓取与索引是两道不同的工序

搜索引擎处理一个 URL,大致分两步:先把 HTML 取回来,这一步叫抓取;再判断它能不能作为搜索结果出现,这一步叫索引。robots.txt 管的是第一步,noindex 管的是第二步。两把锁开在不同的门上,混着用就容易出问题。

robots.txt 拒绝抓取,不等于删除索引

Disallow 的意思是“别来抓”,不是“别收录”。一个 URL 如果之前已经被抓取并进了索引,写了 Disallow 之后,那条记录仍可能保留,因为搜索引擎拿不到新页面来判断内容是不是变了。表现出来就是:搜索结果里还能看到这条 URL,点进去信息却是旧的,标题和摘要有时还会拼错。

noindex 必须被读到才生效

noindex 写在页面 HTML 的 meta 标签或响应头里,前提是搜索引擎能把页面抓下来。如果这个 URL 同时被 robots.txt 挡住,爬虫取不到 HTML,看不到 noindex,退出索引的指令就落空了。这就是常见的“双保险变双失效”。

几种容易踩的组合

  • 目录屏蔽 + 页面 noindex:noindex 大概率读不到,URL 可能长期留在索引里。
  • 只加 noindex、不挡抓取:页面继续被抓,确认信号后逐步退出索引,这是更稳的做法。
  • 只加 robots.txt、不加 noindex:页面不再被抓,但已有索引不会立刻消失。
  • 屏蔽之后别处仍有内链:爬虫依然知道这个 URL 存在,只是不去抓,发现和抓取本来就是两回事。

按目的选工具

目标一:让某个 URL 从索引里退出

  1. 确认页面可以被抓取,robots.txt 不要挡这条路径。
  2. 在页面加 noindex,可用 meta 标签或 X-Robots-Tag 响应头。
  3. 等搜索引擎重新抓取并处理,索引记录逐步减少,这个过程有滞后,不是即时的。
  4. 确认退出后,如果确实不想再被抓,再考虑加屏蔽规则。

目标二:不想让爬虫消耗抓取资源

比如后台路径、站内搜索结果页、大量的筛选参数组合。这类场景用 robots.txt 是合理的,但要接受一个前提:已经进索引的地址不会因为写了 Disallow 就立刻消失,需要单独处理或等待自然更新。

目标三:既不想被收录,也不想被访问到

后台、测试环境、内部资料属于这一类。更稳妥的做法是权限控制,或者干脆返回 403、404,而不是只靠 robots.txt 和 noindex。搜索指令是约定,不是访问控制。

排查清单

  1. 用 robots.txt 测试工具确认目标路径是否被挡。
  2. 用抓取测试工具看页面实际返回的 HTML 里有没有 noindex。
  3. 检查 noindex 是否写在响应头里,与页面 meta 是否冲突。
  4. 检查是否有 X-Robots-Tag 和其他规则叠加。
  5. 确认 canonical 没有指向一个允许收录的地址,canonical 与 noindex 同时出现会互相干扰。
记一句:robots.txt 决定“能不能抓”,noindex 决定“要不要留”。想让它走,就别先把门锁上。

改完之后怎么看

收录变化通常有滞后,配置改完不要一天一查就下结论。观察周期以周为单位更合理,同时看抓取频次、抓取状态码和索引数量的趋势,而不是盯着某一天的数字。信号是否送达,比数字当天有没有动更值得关注。