在蜘蛛池和入口页的搭建中,rel="nofollow" 是一个经常被用到的属性。有人用它来控制入口页的权重流向,有人用它降低被判定为链接操纵的风险。随之而来的问题是:加了 nofollow 之后,搜索蜘蛛还会不会跟着这个链接去抓目标 URL?如果根本不会,那入口页存在的意义就要重新评估。
nofollow 是提示,不是绝对禁令
从公开说明看,主流搜索引擎把 nofollow 当作一种提示,而不是硬性的阻断指令。也就是说,对于加了 nofollow 的链接,搜索引擎可以完全不跟进,也可以选择跟进。是否跟进,往往取决于它自己的判断,比如入口页的质量、目标 URL 是否已经在索引里、当前抓取预算是否充裕等。
这带来两个结论:一是不能假定加了 nofollow 就绝对不抓,二是也不能反过来假定蜘蛛一定会抓。两种极端理解都会让排查方向跑偏。
不同引擎的处理存在差异
- Google 明确把 nofollow 视为提示,并且在很多场景下仍会把它当作发现 URL 的线索;
- Bing 等引擎的表述不完全一致,但通常也不把它当成强制阻断手段;
- 国内搜索引擎没有公开且稳定的规则,实测结果差异较大,不宜照搬。
如果你的流程依赖 nofollow 来精确控制抓取,本身就带着不确定性。
想被蜘蛛发现,就不该指望 nofollow
蜘蛛池里常见的矛盾是:既希望目标 URL 被发现和抓取,又担心入口页链接太直白带来风险,于是加上 nofollow。这其实把两件事混在了一起。nofollow 主要影响的是权重和信任传递,而不是一个可靠的抓取开关。用它来“既隐藏、又触发”,期待本身是互相冲突的。
nofollow 和几个容易混淆的手段
- robots.txt 的 disallow:阻止蜘蛛抓取指定路径,但 URL 仍可能因为外链而被记录;
- meta robots 的 noindex:允许抓取,但不让页面进入索引;
- rel="nofollow":只作用于单个链接,属于提示性质,确定性和作用范围都更弱。
想控制抓取范围用 robots.txt,想控制收录用 noindex,想控制权重传递才用 nofollow,三者目标不同,不能互相替代。
怎么确认蜘蛛有没有跟过去
- 查看目标 URL 所在服务器的访问日志,筛出搜索蜘蛛的 user-agent,确认是否有访问记录;
- 看这些记录里的 Referer 是否指向入口页,判断实际的流量路径;
- 对比加 nofollow 前后一段时间内目标 URL 的被抓次数,而不是只看某一天的快照;
- 同时确认入口页自身是否被抓取,入口页不被抓,后面的链路就无从谈起。
单次日志样本容易被抓取周期干扰,建议至少观察一到两周再下结论。
nofollow 不是抓取开关。以被发现为主要目的时,用可正常抓取的链接、sitemap 和 URL 提交接口组合更稳妥;只有在需要控制权重和风险时,再单独考虑 nofollow。
实践中的几点建议
- 入口页的目标链接如果需要被发现,优先使用普通 a 标签,并保证入口页本身可以被抓取和访问;
- 想降低风险,可以从控制入口页数量、提升内容质量、让链接分布更自然入手,而不是只加一个属性;
- 改动之后一律用日志验证,不要用“应该会抓”来推断结果;
- 把“被发现的概率”和“权重是否传递”当成两个独立问题来分别设计,思路会清楚很多。