先说结论:一个入口页如果只设置了 noindex,搜索蜘蛛仍然可以抓取这个页面,也能顺着页面里的链接继续发现目标 URL。noindex 影响的是这个页面本身能不能出现在搜索结果里,不是搜索蜘蛛能不能来、能不能跟链接。
noindex 管的是收录,不是抓取
把过程拆成三步会清楚很多:抓取、索引、链接发现。抓取是蜘蛛把页面取回本地;索引是判断这个页面值不值得进库、能不能展示;链接发现是在解析页面时,把里面出现的 URL 提取出来进入待抓取队列。
noindex 作用在第二步。它相当于告诉搜索引擎:这个页面可以取,但别把它当结果展示。第三步发生在解析阶段,跟 noindex 没有直接冲突。所以只加 noindex 的入口页,里面的超链接通常照样会被提取出来。
meta robots 和 X-Robots-Tag 的区别
noindex 有两种常见写法。一种是写在 HTML 头部的 robots meta 标签里,只对 HTML 页面有效。另一种是通过响应头 X-Robots-Tag 下发,它对 PDF、图片、视频等非 HTML 资源同样生效,而且常常由服务器或 CDN 统一加上。
这一点在排查时很关键。有时候页面源码里看不到任何 robots meta,抓取结果却显示 noindex,多半是响应头里被加了 X-Robots-Tag。蜘蛛池入口页如果挂在不熟悉的 CDN 或托管平台上,值得先查一遍响应头。
noindex 和 nofollow 组合起来会怎样
- 只写 noindex:页面不进索引,链接仍可被跟随,目标 URL 有机会被发现。
- 只写 nofollow:页面可以正常收录,但页面上的链接不被视为推荐,蜘蛛是否继续跟取决于实际情况。
- 写 noindex 加 nofollow:既不想收录这个页面,也不想让蜘蛛顺着链接走,这时目标 URL 的发现会明显受限。
- 什么都不写:页面正常抓取、正常参与索引,链接照常被跟进。
所以真正会影响链接发现的是 nofollow,而不是 noindex。如果你的入口页只想避免自己出现在搜索结果里,同时又希望目标 URL 被正常发现,通常保留可抓取、不加 nofollow 就够了。
它和 robots.txt 屏蔽完全不是一回事
robots.txt 里的 Disallow 是抓取层指令。被它挡住的 URL,蜘蛛一般不会去取,自然也读不到页面里的链接,链接发现就此中断。这也是为什么有些站点在用 robots.txt 屏蔽入口页之后,发现目标 URL 一个都没动。
noindex 反过来:页面能被取回、能被解析,只是不给展示。两者的层级不同,混用会让问题变得难判断。如果入口页既要防止自己被收录、又希望里面的链接被发现,robots.txt 屏蔽是反效果的做法。
实际排查时可以按这个顺序看
- 查看页面 HTML 头部有没有 robots meta,确认里面是否包含 noindex、nofollow 或 none。
- 用抓取工具或直接查看响应头,确认有没有 X-Robots-Tag 被服务器或 CDN 注入。
- 检查 robots.txt 是否对该入口页或其目录做了 Disallow,这一步会直接决定蜘蛛来不来。
- 确认返回状态码是 200,而不是 404、5xx 或需要登录跳转,否则链接发现同样会断。
- 看页面里的目标链接是不是真正可抓取的超链接,而不是脚本渲染后才出现、或者被包在登录校验后面。
noindex 不等于隐身。想让入口页不被收录又想保留链接发现能力,就只加 noindex;想让蜘蛛连抓都别抓,才需要考虑抓取层的屏蔽。
最后提醒一点:noindex 是一个索引层指令,既不能阻止蜘蛛访问,也不能阻止它解析页面。它的价值在于控制展示结果,而不是控制抓取行为。把这一点区分清楚,蜘蛛池入口页的配置就不容易走偏。