搜索抓取

nofollow 与抓取路径:链接属性会让蜘蛛停在哪一步

链接属性常被当成权重开关,其实它先影响的是抓取路径:蜘蛛会不会顺着这条链接继续走。本文说明 nofollow、ugc、sponsored 的区别,整理整站导航加属性、JS 动态注入、与 canonical 及 Sitemap 混用等常见误用,并给出用抓取日志验证链接是否真的被跟进的方法。

搜索抓取

nofollow 与抓取路径:链接属性会让蜘蛛停在哪一步

站内链接是蜘蛛发现新 URL 最日常的方式。而链接上附加的 rel 属性,会在蜘蛛决定要不要顺着这条链接走的时候起作用。很多人只把 nofollow 理解成不传递权重的开关,其实它首先影响的是抓取路径:蜘蛛可能根本不沿着这条链接爬过去。

nofollow 现在更像一个提示

早些年 nofollow 被当作硬性指令,现在主流搜索引擎基本把它视为提示(hint)。也就是说,写了 nofollow 的链接仍有可能被抓取,尤其是这个 URL 从别处也能到达时。反过来,没写属性的链接也不保证一定会被抓,抓取预算、页面层级、服务器响应都会影响结果。

所以更实际的问法是:这条链接是不是我希望蜘蛛走的路径?如果答案是否定的,用它来减少无效抓取是合理的;如果这条链接指向重要内容,就不该随手加上 nofollow。

三种属性分别表达什么

rel="nofollow"

最通用的信号,含义是别把这条链接当成我推荐的路径。适合用在明显不属于编辑推荐的区域,比如未审核的用户评论外链、广告位包裹的链接、第三方嵌入模块里的跳转。

rel="ugc"

用户生成内容的标记。它不是为了帮蜘蛛判断质量,而是说明这里的内容来自用户,站点不为其背书。评论、论坛帖子里的链接用它就够了。

rel="sponsored"

付费或商业合作链接使用。作用和 nofollow 相近,但语义更明确。软文、联盟链接、带返佣的推荐位属于这一类。

三者都不会让 URL 消失,也不等于禁止索引。如果某个页面确实不该出现在搜索结果里,应该用 noindex 或 robots.txt,而不是指望 nofollow 帮你解决。

常见写法与副作用

  1. 整站导航加 nofollow。有人为了集中权重,把菜单、分页、页脚链接全部加上属性,结果蜘蛛失去主要通路,新内容只能靠 Sitemap 被发现,抓取节奏往往更慢。
  2. 在 JS 里动态注入属性。链接由脚本生成、属性在渲染后才加上,蜘蛛未渲染时看到的可能是普通可跟随链接,行为并不稳定。需要控制抓取路径时,最好在 HTML 源码里就写好。
  3. 把 canonical 和 nofollow 混用。canonical 用来合并重复地址,本身不阻止抓取;再给它附加 nofollow 或 noindex,容易让信号互相打架。
  4. Sitemap 与 nofollow 并存。Sitemap 里列出的 URL 不经过链接属性,蜘蛛仍可能去抓。若某个地址确实不想被访问,应同时从 Sitemap 和内链里移除,而不是只在一处加属性。

更稳妥的处理方式

  • 重要内容保持普通可跟随链接,尤其是分类页、详情页和新内容入口。
  • 只对确实不希望蜘蛛走的那条路径加属性,范围尽量小。
  • 把不抓和不索引分开考虑:前者用 robots.txt 或链接属性控制路径,后者用 noindex。
  • 链接属性不能替代内链结构。蜘蛛本来就到不了的地方,加不加属性都没有意义。

用日志验证实际效果

写完之后要确认蜘蛛到底走了哪条路。抓取日志里能看到它请求了哪些 URL、来源页面是什么。如果某个栏目长期没有来自导航的抓取请求,就要检查是不是在菜单或模板里加了属性。

站点后台的链接报告、URL 检查工具也可以用来抽查。改动之后不必每天盯着看,观察两到四周的抓取分布变化通常更有参考价值。

链接属性是抓取路径上的路标,不是开关。写之前先想清楚:这条链接是要让蜘蛛走过去,还是让它绕开。