搜尋抓取

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 检查工具也可以用来抽查。改動之後不必每天盯着看,观察两到四周的抓取分布變化通常更有參考價值。

連結属性是抓取路径上的路标,不是開關。寫之前先想清楚:這條連結是要让蜘蛛走過去,還是让它绕開。