搜索抓取

noindex 之后蜘蛛为什么还会来抓:不索引与不抓取是两回事

给页面加上 noindex 后,日志里仍会出现抓取记录,这让不少人困惑。本文说明 noindex 只作用于索引环节、不负责阻止抓取,并解释它与 robots.txt 的先后关系、noindex 页面是否浪费抓取配额,以及一套可执行的自查清单。

搜索抓取

noindex 之后蜘蛛为什么还会来抓:不索引与不抓取是两回事

给页面加上 noindex,很多人的预期是“蜘蛛别再来了”。实际观察日志会发现,被 noindex 的 URL 依然会出现抓取记录,有时频率还不低。这不是蜘蛛没读懂指令,而是 noindex 和“不抓取”本来就作用在不同环节。

noindex 管的是索引,不是抓取

蜘蛛处理一个 URL 大致会经过几步:发现地址、发起抓取、解析内容、决定是否索引、安排后续调度。noindex 是在“决定是否索引”这一步生效的指令,它告诉搜索引擎:这个页面可以看,但不要放进索引。抓取发生在它之前,并不会因为 noindex 而被取消。

所以日志里出现 noindex 页面的抓取记录属于正常现象。真正决定蜘蛛来不来的,是 URL 有没有被发现、robots.txt 允不允许访问、服务器能不能正常返回内容。

为什么蜘蛛还会反复抓 noindex 页面

  • 页面上的链接仍然存在,蜘蛛顺着内链多次发现它,抓取调度就会把它排进去。
  • 指令可能变化。今天 noindex,明天也许改回 index,蜘蛛需要定期复查才能及时响应。
  • 页面本身有外链或一定访问量时,蜘蛛会把它当成活跃 URL 对待。
  • 如果它还被写在 Sitemap 里或通过接口提交,等于主动提醒蜘蛛这里有更新。
把 noindex 理解成“内容不许进索引”,而不是“URL 不许被访问”,很多现象就说得通了。

noindex 与 robots.txt 的区别

想让蜘蛛彻底不来,常见做法是在 robots.txt 里 Disallow 掉对应目录。但这两者有先后关系:robots.txt 是请求层面的拦截,蜘蛛被挡住后拿不到页面内容,也就看不到页面里的 noindex 标签。

如果一个页面同时被 robots.txt 屏蔽、又加了 noindex,搜索引擎只能知道“这里禁止抓取”,无法确认 noindex。结果可能是:URL 因为外链等原因仍出现在索引里,但显示为没有描述的条目。这种情况通常比单纯 noindex 更难处理。

较稳妥的顺序是:先让页面可以被抓取,确保 noindex 能被读到;等 URL 从索引中逐渐消失后,再考虑是否需要进一步用 robots.txt 拦截。

noindex 页面会不会浪费抓取资源

会占用一部分,但不必过度紧张,影响主要取决于数量级。几个到几十个页面,对抓取调度几乎没有感知;如果站内存在成千上万个自动生成的 noindex 页面,而且都有内链指向,蜘蛛的抓取配额就会被分走,正常页面的抓取节奏可能变慢。

这种情况下更值得做的是减少这些页面的入口,而不是只加 noindex。比如把无价值的筛选页、参数页从内链和 Sitemap 中去掉,让蜘蛛少发现它们。

自查清单

  1. 用日志确认 noindex 页面的抓取频率,判断是零星复查还是成规模反复抓。
  2. 检查 noindex 页面是否还在 Sitemap 中,既然不打算索引,通常也没有必要继续放在地图里。
  3. 确认没有出现“robots.txt 屏蔽加 noindex”的组合,尤其是被屏蔽目录里的页面标签。
  4. 确认页面返回的状态码正常。noindex 不需要配合 404 使用,返回 404 的页面本身就不必再谈 noindex。

noindex 是索引层面的指令,它不负责切断抓取路径。想减少蜘蛛访问,要从链接、Sitemap、robots.txt 这些入口和通路上解决;想控制索引,再用 noindex 表达。两者各管一段,混在一起用,问题往往出在中间那段没人管。