常见问题

入口页加了 noindex,里面的链接还会被搜索蜘蛛跟过去抓吗

入口页加 noindex 后,里面的目标 URL 链接还会被搜索蜘蛛发现吗?noindex 只控制入口页自身是否进索引,并不阻断出链被抓取。本文把 noindex、nofollow、robots.txt Disallow 三者的区别拆开讲,并说明只隐藏入口页、又要保留链接通路时该怎么写。

常见问题

入口页加了 noindex,里面的链接还会被搜索蜘蛛跟过去抓吗

不少人把 noindex 和 nofollow 混为一谈,以为入口页一旦加了 noindex,里面的链接就“作废”了。实际上,noindex 管的是“这个页面本身要不要进索引”,不管“页面里的链接要不要被跟随”。只要入口页本身还能被抓取,里面的目标 URL 依然有机会被搜索蜘蛛发现。

noindex 到底管什么

noindex 是给页面自己下的指令,含义是:别把我放进搜索结果。它不涉及页面上的出链。搜索蜘蛛抓到一个带 noindex 的入口页时,大致会做两件事:读取 noindex,然后继续解析页面内容、顺着 a 标签里的 href 去发现新的 URL。这两件事彼此独立。

真正可能挡住“顺着链接往下走”的,是另外几个东西:

  • rel=nofollow:写在单个链接上,表示不跟随这条链接。现在多数搜索引擎把它当作提示,而不是硬性指令。
  • robots.txt 的 Disallow:禁止抓取该路径。页面根本抓不到,里面的链接自然也无从解析。
  • 登录墙、403、验证码:内容拿不到,链接也拿不到。

三种写法的实际差别

假设入口页 A 上有指向目标 URL B 的链接,可以对比几种配置:

  1. noindex, follow:A 不进索引,B 的链接正常被发现和跟随。这是“只想隐藏入口页、但保留链接通路”时比较常用的写法。
  2. noindex, nofollow:A 不进索引,链接也不鼓励跟随。B 被发现的概率会明显下降,尤其是 B 没有其他外链来源时。
  3. robots.txt 里 Disallow 掉 A:A 抓不到,链接基本没戏,除非 B 能从别的地方被发现。
一句话记:noindex 是“别收录我”,nofollow 是“别跟着我走”,Disallow 是“别来抓我”。三者不能互相替代。

一个容易被忽略的坑

如果页面同时长期挂着 noindex 和 nofollow,部分搜索引擎会把它整体当作 noindex, nofollow 来处理——也就是说,即便你之后去掉了 nofollow,这个判断可能还会沿用一段时间。所以如果本意只是隐藏入口页、希望链接继续被跟随,就别顺手加上 nofollow,写成 noindex, follow 更干净。

写在 meta 里和写在响应头里不一样

noindex 可以写在 meta 标签里,也可以通过 HTTP 响应头的 X-Robots-Tag 下发。两者都能生效,但要注意:写在响应头里时,它作用于整个响应,包括非 HTML 文件。如果入口页前面有缓存或 CDN 层,改完之后要确认缓存已经刷新,否则搜索蜘蛛拿到的仍是旧的响应头。

想确认有没有生效,看这几个地方

  • 服务器日志里,入口页 A 是否有搜索蜘蛛的抓取记录,返回码是否为 200。
  • 目标 URL B 的日志里,是否出现了来自 A 的抓取痕迹或 Referer。
  • 用抓取测试工具查看 A 的渲染结果,确认链接在渲染后仍然存在。纯 JS 插入的链接需要单独验证。

如果 A 有抓取记录、返回 200,但 B 长期没有任何被抓的迹象,问题通常不在 noindex,而在别处:链接是否真的写在 HTML 里、是否被 nofollow、B 自己是否返回 4xx 或 5xx、入口页链接数量是否过多而稀释了抓取预算。

什么情况下反而建议用 Disallow

如果入口页只是一个技术中转、内容对用户毫无意义,而且你并不依赖它来完成目标 URL 的发现,那用 robots.txt 屏蔽更干脆,也能省下抓取配额。反过来,只要你还需要它承担“入口发现”的角色,就别屏蔽,用 noindex, follow。

小结

noindex 不等于 nofollow,更不等于屏蔽抓取。想隐藏入口页又保留链接通路,用 noindex、follow;想彻底不抓,用 robots.txt;想不跟随单条链接,用 nofollow。分清这三件事,排查问题时就不会把方向搞反。