网站收录

robots.txt 屏蔽与 noindex:想移除收录时该先用哪一个

robots.txt 管的是能不能抓,noindex 管的是抓到之后收不收。两者顺序用反,页面常常会以无摘要的形式长期留在索引里,而且因为抓不到,排查也变得困难。本文梳理两者的作用位置、常见的误用组合,以及移除已收录页面时可以按顺序做的几步。

网站收录

robots.txt 屏蔽与 noindex:想移除收录时该先用哪一个

做内容清理时,很多人第一反应是在 robots.txt 里加一条 Disallow,或者在页面头部塞一个 noindex。看起来都是在说“别收这个页面”,但这两件事发生在完全不同的环节。顺序用反,常见的结果是页面依然留在索引里,而且因为蜘蛛抓不到,后续想查都查不了。

禁止抓取和禁止收录是两件事

抓取是搜索引擎把页面内容取回去,收录是取回之后决定要不要放进索引。robots.txt 影响第一步,noindex 影响第二步。

  • robots.txt 里的 Disallow:告诉蜘蛛这个路径别来抓。蜘蛛通常遵守,于是它拿不到页面内容。
  • noindex:写在页面里,意思是“抓到了,但别放进索引”。它的前提是页面能被抓到。

这里的关键点是:noindex 是页面内容的一部分,蜘蛛不进来看,就永远读不到这条指令。

被屏蔽的 URL 仍可能出现在结果里

一个地址被 Disallow 之后,如果站内其他页面或站外链接还在指向它,搜索引擎仍可能把这个 URL 记下来。它可能出现是结果里,但通常没有标题、描述和摘要,只是一个孤零零的链接。这不算违规收录,而是蜘蛛无法确认页面内容,只能先保留地址。

屏蔽抓取不等于从索引里消失,很多时候只是把页面变成了“看不到内容”的状态。

noindex 不生效的几种情况

  • 页面同时被 robots.txt 挡住,蜘蛛进不来,读不到 noindex。
  • noindex 是通过 JS 渲染后才插进 DOM 的,首轮抓取看不到。
  • 写在 HTTP 响应头 X-Robots-Tag 里,但格式或字段名写错了。
  • 同一个页面既写了 noindex,又写了指向自己的 canonical,信号互相矛盾。
  • meta 标签拼写有误,实际等同于没写。

移除已收录页面,可以按这个顺序做

  1. 先确认页面能被抓取:robots.txt 不挡这个路径,访问返回 200。
  2. 在页面头部或响应头加上 noindex,保持可抓取状态。
  3. 等搜索引擎重新抓取这个地址,索引状态会慢慢变成已排除或从结果中淡出。这个过程从几天到几周都有可能。
  4. 确认索引里已经没有它之后,如果确实不想再让蜘蛛把抓取机会花在这里,再考虑加 Disallow。

把顺序倒过来做,最容易卡在第一步:Disallow 一加,蜘蛛再也读不到 noindex,页面就可能长期以无摘要的形式挂在索引里,既占位置又难处理。

页面已删或者需要尽快消失

  • 内容确实不再提供:返回 404 或 410 通常比 noindex 更直接。410 语义上更明确,表示已删除。
  • 页面要留着给用户看,只是不想被搜到:用 noindex,同时保证它可被抓取。
  • 整站或整个目录临时不想被抓:robots.txt 可以临时用,但要记住它只是一个抓取开关,已有的收录状态不会跟着一起清掉。

几类常见误用

  • 测试站没有防护:既没 noindex 也没访问限制,被抓走之后变成重复内容的来源。
  • 给 noindex 页面做内链:内部链接会持续把蜘蛛引向这些地址,既浪费抓取机会,也让这些 URL 更容易被外部发现。
  • 只改 robots.txt 就以为页面会消失:收录层面的移除需要页面级指令或者状态码来配合。
  • 对分页、筛选页一刀切 Disallow:如果商品或内容的唯一入口就在这些页面里,屏蔽抓取会顺带断掉发现路径,反而影响真正想被收录的页面。

自查顺序小结

遇到“不该被收录的页面还挂在索引里”,可以按这个顺序排一遍:页面现在返回什么状态码,robots.txt 是否挡住了它,蜘蛛能不能读到 noindex,有没有内链或外链在持续指向它,最后再考虑用工具提交移除请求。把这几步的顺序理清,通常比反复改 robots.txt 更省事。