站内链接上加一个 rel="nofollow",是不少运营和开发的习惯动作。加完之后,蜘蛛到底还会不会顺着这条链接走过去,答案往往和直觉不太一样。
nofollow 原本想解决什么问题
这个属性的原始用途,是标记“这个链接不是本站主动背书的”。典型场景是不可信的外部链接、广告位、联盟链接和用户生成内容。它的核心语义偏向不要把它当作一次投票,而不是“不要访问这个地址”。
把这句话记住,后面很多困惑就容易理解了:nofollow 管的是链接信号,不是服务器访问权限。
蜘蛛遇到 nofollow 链接时的实际动作
- 多数搜索引擎会降低或忽略这条链接传递的权重信号。
- 是否抓取目标 URL,各家引擎策略并不统一,有的仍会把该地址纳入发现队列。
- 即便站内全部加了 nofollow,这个 URL 也可能通过 Sitemap、外部链接或其它内链被找到。
所以,看到一个 nofollow 链接对应的 URL 仍然出现在抓取日志里,并不代表设置失效,而是它本来就属于另一个层面的问题。
URL 发现与权重传递是两件事
把流程拆开会更清楚:发现(蜘蛛知道这个地址存在)、抓取(服务器返回了内容)、索引(引擎判断是否入库)、排序(在结果中排到什么位置)。nofollow 主要作用于后两者之间的信号判断,对“服务器有没有被访问”这件事影响有限。
站内用 nofollow 的几个常见误区
把它当成 robots.txt 用
robots.txt 是抓取层面的规则,告诉蜘蛛哪些路径不必来请求;nofollow 是页面内链接层面的提示。想阻断抓取,靠 nofollow 是放错了位置。
用它来“节省抓取预算”
效果通常有限。真正影响预算的是站点里存在多少低价值、重复、无法访问的 URL,以及服务器响应是否稳定。与其逐个链接加标签,不如先把无意义的参数页、空列表页收敛掉。
给重要栏目入口加 nofollow
站内导航、栏目入口这类链接,是蜘蛛建立抓取路径的骨架。给它们加 nofollow,可能让该栏目下的一批 URL 发现变慢,行走半径变窄,得不偿失。
更合适的替代做法
- 不希望被抓取:用 robots.txt 划定范围,注意规则写清楚,避免误伤。
- 可以抓取但不希望被索引:用 noindex。需要留意的是,noindex 页面本身仍可能被请求。
- 同一内容多个地址:用 canonical 指明主版本,而不是靠 nofollow 硬压。
- 低价值参数页或筛选页:从内链结构上收敛,必要时再配合 robots.txt。
- 用户生成内容、广告位:nofollow 或同类属性仍在合理使用范围内,同时配合审核机制。
几种机制各管一段:robots.txt 管抓取范围,nofollow 管链接信号,noindex 管是否入库,canonical 管重复归并。不要指望一个标签解决全部问题。
怎么确认设置有没有起作用
比较实际的做法是看日志:观察被标记链接对应的 URL,是否仍有蜘蛛请求。如果仍被访问,通常是正常的;真正需要关注的是这些请求带来了什么结果,页面是否返回 200、内容是否与预期一致、是否反复抓取同一批无变化地址。
如果发现某类 URL 被大量重复抓取,先排查内链是不是把它们放在了导航、列表等高频位置,再考虑是否需要调整结构,而不是急着加 nofollow。
总结一句:nofollow 是一个表达态度的属性,不是一道门禁。想控制蜘蛛走哪条路,最终还是要回到站点结构、服务器响应和 URL 本身的取舍上。