搜索抓取

noindex 页面还在被抓:robots meta 在抓取阶段到底管什么

noindex 经常被当成阻止蜘蛛抓取的开关,但它只作用于索引阶段。蜘蛛必须先抓取页面才能读到指令,因此 noindex 页面仍可能出现在日志里。本文梳理 noindex、nofollow、robots.txt 和 X-Robots-Tag 的分工,说明常见误用与检查方法。

搜索抓取

noindex 页面还在被抓:robots meta 在抓取阶段到底管什么

很多人把 noindex 当成“别让蜘蛛来”的开关,结果在日志里看到这些 URL 仍被反复抓取,就觉得指令失效了。实际上,noindex 管的是索引,不是抓取。

蜘蛛必须先抓到,才能读到 noindex

noindex 写在页面 HTML 的 meta 标签或 HTTP 响应头里。蜘蛛只有实际请求了这个 URL、拿到响应,才知道页面写了什么。因此,只要页面还有内链、Sitemap 或其他入口,它就可能继续出现在抓取日志里。抓取和索引是两件事:抓取是把内容取回来,索引是决定要不要放进可检索的集合。

想拦住抓取,要用 robots.txt;想拦住索引,要用 noindex。两者混用常常互相打脸。

noindex 和 robots.txt 的配合顺序

如果先用 robots.txt 屏蔽某个目录,蜘蛛就不会去请求里面的页面,自然也读不到页面上的 noindex。此时如果外部还有链接指向这些 URL,搜索引擎可能仅凭外链信息把它们放进索引,通常没有摘要,反而更难处理。

  • 希望 URL 彻底不被抓取、也不在结果里出现:robots.txt 拦截可以做到,但要接受“读不到 noindex”的副作用。
  • 希望页面被抓到、确认内容后退出索引:放行抓取,加 noindex。
  • 大量低质筛选页、参数页:优先用内链和 Sitemap 控制发现范围,再考虑 noindex,不要一律封 robots.txt。

nofollow 只是链接级别的提示

nofollow 通常加在链接上,表示“这个链接的目标我不背书”。它的作用是提示,不是硬性阻止。蜘蛛仍可能顺着链接发现 URL,只是不会把它当作信任投票。nofollow 不会阻止目标页面被抓取,也不会替代目标页面的 noindex。

如果某页面需要保留抓取、但不想让它传递信号,可以组合使用:链接加 nofollow,目标页加 noindex,两者各管一段。

非 HTML 资源的指令走 HTTP 头

对 PDF、图片、视频这类文件,HTML 里的 meta 标签用不上,需要在响应头加 X-Robots-Tag。写法与 meta 类似,只是放在服务器配置里。很多站点只改了模板,忘了这些资源,导致原本想排除的文件仍被索引。

常见误用与检查方法

  • 用 robots.txt 挡 noindex:蜘蛛读不到指令,URL 可能以无摘要形式留在结果里。
  • 用 noindex 挡抓取:抓取不会停,只是内容不进索引,抓取预算照样被消耗。
  • noindex 页面还放在 Sitemap 里:等于主动告诉蜘蛛“来抓我,但别索引”,一般没必要,除非短期过渡。
  • 只改模板不核对响应头:JS 渲染、CDN 缓存都可能让实际返回的 meta 与预期不同。

检查时可以先看服务器日志里这些 URL 的请求频率有没有下降,再对照抓取统计和索引覆盖报告。如果 noindex 生效,抓取量通常会在一段时间后逐步回落;若长期不降,多半是内链或 Sitemap 还在持续供给入口。

把指令用在合适的位置

抓取阶段考虑的是“蜘蛛来不来、来多少”,索引阶段考虑的是“来了之后留不留”。noindex 适合后者,robots.txt 适合前者,nofollow 处理链接关系。先想清楚目标,再决定用哪个工具,比把三种指令堆在一起更有效。