不少做蜘蛛池的人会给入口页加上 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,但这同时会让里面的链接不再被发现,很可能和你原本的目的相反。
排查时按这个顺序看
- 确认入口页返回 200,且 Content-Type 是蜘蛛能解析的类型。
- 在日志里确认蜘蛛确实请求了入口页,而不是只请求了站点首页。
- 检查响应头里的 X-Robots-Tag 是否同时带了 nofollow。
- 检查 HTML head 里的 meta robots 是否包含 nofollow。
- 确认目标链接是可解析的 <a href>,不是纯文本,也不是靠 JS 后置插入。
- 最后再看目标 URL 自身的状态码,403、429、500 都会让发现链条断在下一步。
一句话区分:noindex 决定“这一页要不要进索引”,nofollow 决定“这一页的链接要不要跟”。把这两个指令当成同一件事,日志和实际抓取行为就会对不上。
小结
如果只是想把入口页隐藏起来,用 noindex 就够了,但要知道入口页仍会被抓取、仍会消耗抓取预算,里面的链接也仍会被发现。只有当你不希望链接被跟进时,才需要 nofollow,而这通常和蜘蛛池的用途相冲突。把这两件事分清楚,再去看日志里的抓取记录,判断才会更贴近实际。