搜索抓取

被 noindex 的页面,蜘蛛为什么还会来抓

很多人把 noindex 当成不让蜘蛛访问的开关,其实它只影响索引,不阻断抓取。被 noindex 的 URL 仍可能通过内链、Sitemap 或历史记录被访问,继续消耗抓取预算。本文说明抓取与索引的区别,以及想让蜘蛛少来时,robots.txt 和状态码应该怎么配合。

搜索抓取

被 noindex 的页面,蜘蛛为什么还会来抓

在站点运营中,noindex 常被当成一个“别抓我”的开关。实际上它管的是索引,不是抓取。蜘蛛是否来访问,取决于它能不能发现这个 URL,以及服务器是否允许连接。理解这一点,能避免很多不必要的抓取浪费。

抓取和索引不是同一件事

搜索蜘蛛的工作大致分两步:先抓取页面,再把内容送去索引。抓取是取回 HTML,索引是判断这个页面要不要出现在搜索结果里。noindex 作用在第二步,它告诉搜索引擎“内容可以读,但不要收录”。

所以,一个页面加上 noindex,不等于蜘蛛不会访问。蜘蛛仍然可能来抓,只是抓到之后不会把它放进索引。如果页面本身有内链指向,或者出现在 Sitemap 里,被抓的概率并不会因为 noindex 而降到零。

蜘蛛为什么还会访问 noindex 页面

常见原因有几个:

  • 内链仍然存在:导航、正文、相关推荐里的链接,蜘蛛会顺着爬。
  • Sitemap 或外链的发现通道:如果 URL 还在清单里,或被外部引用,蜘蛛仍可能知道它。
  • 历史抓取记录:之前抓过的 URL 会留在队列里,回访并不奇怪。
  • 站点结构变化:页面改了 meta,但链接没清理,蜘蛛按旧路径继续访问。

这些访问会消耗抓取预算。对内容量大的站点来说,大量低价值页面被反复抓取,可能挤占真正需要更新的页面。

想让蜘蛛少来,应该怎么做

关键是分清目的:如果只是不想让页面出现在搜索结果里,用 noindex 就够了;如果连抓取都不想让它发生,才考虑 robots.txt 或服务器层面的限制。

  1. 只想移除索引:保持页面可抓取,设置 noindex。等蜘蛛重新抓取并看到标签后,页面会逐步从索引中移除。如果页面已经不存在,返回 404 或 410 也可以。
  2. 不想被索引,也不想被频繁抓取:先确认是否真的不需要任何搜索引擎访问。robots.txt 禁止抓取后,蜘蛛读不到 noindex,已索引的页面可能仍会保留一段时间。更稳妥的做法通常是允许抓取并 noindex,等索引移除后再考虑限制抓取。
  3. 页面只对登录用户开放:不要用 noindex 当访问控制。未登录蜘蛛看到的是登录页或空内容,容易产生误解。用状态码或权限控制更直接。
把 noindex 当索引控制,把 robots.txt 当抓取控制,两者不要混用。顺序弄反,容易出现“想删的没删掉,想留的也没抓全”。

容易被忽略的 noindex 使用场景

分页和筛选页

列表页的分页、排序参数组合出的 URL,如果内容重复度高,可以用 noindex 减少索引负担。但注意,不要因为 noindex 就放任这些 URL 被大量抓取,内链和参数治理仍然要做。

站内搜索结果页

站内搜索生成的页面通常不建议索引,也不建议让蜘蛛深挖。可以用 noindex,并配合 robots.txt 禁止抓取搜索参数,减少无效访问。

临时页和打印页

活动页、打印版、弹窗落地页,如果只是短期存在,加 noindex 可以避免它们进入索引。页面下线后,返回 404 或 410 比长期保留一个空页面更干净。

从日志里看实际效果

设置 noindex 后,可以在服务器日志里观察这些 URL 的访问频率。如果一段时间后仍然频繁出现,检查内链、Sitemap 和外部链接是否还在指向它们。抓取频率没有明显下降,说明发现通道没有收窄,单靠 noindex 解决不了抓取预算的问题。

站点运营里,noindex 是一个细粒度的索引开关,不是万能拦截器。把它和 robots.txt、状态码、内链清理配合使用,才能让蜘蛛把有限的抓取次数用在更值得的页面上。