内鏈是蜘蛛發現新 URL 的主要通道,而連結上的 rel 属性會改變蜘蛛處理這條連結的方式。很多站点把它当成一個開關,加了就以為蜘蛛一定不走;也有人完全不敢用,怕影响抓取。實际規則比這两種理解都细一些。
rel 属性在告诉蜘蛛什么
rel="nofollow" 最早的含义是不要沿着這條連結繼續传递權重,後来逐步演變成對連結性质的一種标注。目前主流搜尋引擎把它视為提示(hint),而不是必须执行的指令。也就是说,加了這個属性,連結仍然可能被蜘蛛走到,只是它在排序信号上的作用被弱化。
两個變体常被一起提到:rel="ugc" 用于用戶生成内容里的連結,rel="sponsored" 用于付費或赞助性质的連結。它們和 nofollow 想表達的意思接近,区別在于语义更明确。
三個常见的誤解
一、加了 nofollow 蜘蛛就不抓
這是最常见的想当然。蜘蛛是否抓取某個地址,取决于它對站点整体的抓取安排、這條連結所在的位置和上下文,以及该 URL 是否在別處也被引用。nofollow 更接近“我不為這條連結背书”,而不是“這條連結不存在”。
二、頁面級和連結級是一回事
頁面級寫法 作用于整頁所有出鏈;連結級 rel="nofollow" 只作用于那一條。前者影响范围大得多,改動前最好確認整頁出鏈里有没有需要被蜘蛛走到的重要地址,比如分頁、栏目入口。
三、用 nofollow 省抓取预算
靠它来省抓取预算,效果並不稳定。如果目标是不让蜘蛛請求某個地址,robots.txt 的 Disallow 更直接;如果是想让某個頁面不進索引,應该用 noindex。拿 nofollow 去挡這两件事,往往两邊都達不到预期。
比較适合使用的场景
- 用戶评论、论坛簽名里自動生成的連結,性质不可控,标注 ugc 更清楚。
- 付費推廣、联盟連結,标注 sponsored 是基本要求。
- 登入、註冊、购物车、打印頁這類没有检索價值的頁面入口,可以在内鏈层面做處理。
- 指向站外、你不想為其背书的地址。
反過来,站点自己的栏目頁、詳情頁、分頁、Sitemap 里列出的地址,一般不應该被 nofollow 覆盖,這些正是蜘蛛需要走的路。
内鏈上的 rel 属性只影响這條連結的信号强度,不负责决定蜘蛛能不能請求這個地址。想控制抓取,用 robots.txt;想控制索引,用 noindex。三者分工不同,混用容易出現意料之外的结果。
怎么確認處理结果
改動之後不要只看頁面源碼,去看服務器日誌里蜘蛛對相關 URL 的請求有没有變化,再用抓取統計观察一段時間。如果一批原本能走到的地址在改動後請求量明顯下降,說明覆盖范围给大了。稳妥的做法是:先在小范围頁面加上,观察几周,再决定要不要推廣到其他位置。
另外要注意,rel 属性描述的是頁面上可见的連結,通過外鏈或其他外部通道引入的連結不在這套規則里,两邊的處理逻辑不要混在一起讨论,否則很难判断問题出在哪一层。