常见问题

入口页写了 noindex 或 X-Robots-Tag:里面的目标链接还会被搜索蜘蛛跟进吗

很多站长把入口页设成 noindex,以为这样入口页里的链接也不会被抓。其实 noindex 管的是“要不要进索引”,nofollow 才管“链接要不要跟”。本文讲清两者的差别、日志里的表现,以及蜘蛛池场景下这样设置会带来哪些实际影响。

常见问题

入口页写了 noindex 或 X-Robots-Tag:里面的目标链接还会被搜索蜘蛛跟进吗

不少做蜘蛛池的人会给入口页加上 noindex,想法很直接:只想让入口页当个“放链接的架子”,不希望它本身进入索引。这个思路本身没问题,但常被顺带理解成“入口页不索引了,里面的链接也就不会被抓”。这是两件事,需要拆开看。

noindex 管的是索引,不是抓取

noindex 的语义是“不要把这一页放进索引结果”,它并不阻止搜索蜘蛛来请求这一页。只要入口页能被正常抓取,蜘蛛依然会下载 HTML、解析里面的链接,把目标 URL 放进待抓队列。真正会让链接跟进行为停止的,是 nofollow 这一类指令,而不是 noindex。

反过来说,如果入口页连抓都抓不到(被 robots.txt 屏蔽、返回 403 或 429、需要登录),那 noindex 写在哪儿都读不到,链接自然也发现不了。“可抓取”是前提,“是否索引”是另一层判断,顺序不能倒过来。

两种写法在日志里的表现

meta robots

写在 HTML 的 head 里,例如 <meta name="robots" content="noindex">。蜘蛛必须先抓到并解析 HTML 才能读到它,所以入口页会正常出现在访问日志中,状态码一般是 200。

X-Robots-Tag

写在 HTTP 响应头里,例如 X-Robots-Tag: noindex。蜘蛛在响应头阶段就能看到这个标记,处理路径更短,但对“页面里的链接能否被发现”没有影响——链接还在 HTML 里,依然会被解析。

两种方式都不会让入口页从抓取日志里消失。你能看到的访问记录,和“索引状态”是两套分开的信号,排查时不要混用。

和 nofollow 一起写会怎样

常见的组合是 noindex, nofollow。这时入口页虽然照样能被抓,但页面上的链接不再被当作可跟进的发现来源。不同搜索引擎在细节实现上可能有差异,稳妥起见不要指望它仍能正常传递发现。

如果你的目标是“入口页不进索引,但里面的链接照常被发现”,那就只写 noindex,不要带 nofollow;写成 noindex, follow 语义会更明确。

放到蜘蛛池场景里的几个实际影响

  • 入口页会持续被抓取。noindex 不会降低抓取频率,只要入口页还被外链、sitemap 或别的入口指向,蜘蛛仍然会来。
  • 抓取配额会被占用。入口页本身不产生索引层面的价值,却要消耗抓取预算。入口页数量一大,这部分开销要提前算清楚。
  • 链接发现照常进行。目标 URL 会不会被排队,取决于入口页是否可抓、链接是否是可解析的超链接、目标 URL 是否可访问,与入口页写不写 noindex 无关。
  • noindex 不能当成“屏蔽入口页”的手段。如果确实不想让入口页被抓,那要用 robots.txt,但这同时会让里面的链接不再被发现,很可能和你原本的目的相反。

排查时按这个顺序看

  1. 确认入口页返回 200,且 Content-Type 是蜘蛛能解析的类型。
  2. 在日志里确认蜘蛛确实请求了入口页,而不是只请求了站点首页。
  3. 检查响应头里的 X-Robots-Tag 是否同时带了 nofollow。
  4. 检查 HTML head 里的 meta robots 是否包含 nofollow。
  5. 确认目标链接是可解析的 <a href>,不是纯文本,也不是靠 JS 后置插入。
  6. 最后再看目标 URL 自身的状态码,403、429、500 都会让发现链条断在下一步。
一句话区分:noindex 决定“这一页要不要进索引”,nofollow 决定“这一页的链接要不要跟”。把这两个指令当成同一件事,日志和实际抓取行为就会对不上。

小结

如果只是想把入口页隐藏起来,用 noindex 就够了,但要知道入口页仍会被抓取、仍会消耗抓取预算,里面的链接也仍会被发现。只有当你不希望链接被跟进时,才需要 nofollow,而这通常和蜘蛛池的用途相冲突。把这两件事分清楚,再去看日志里的抓取记录,判断才会更贴近实际。