站内連結是蜘蛛發現新 URL 最日常的方式。而連結上附加的 rel 属性,會在蜘蛛决定要不要顺着這條連結走的时候起作用。很多人只把 nofollow 理解成不传递權重的開關,其實它首先影响的是抓取路径:蜘蛛可能根本不沿着這條連結爬過去。
nofollow 現在更像一個提示
早些年 nofollow 被当作硬性指令,現在主流搜尋引擎基本把它视為提示(hint)。也就是说,寫了 nofollow 的連結仍有可能被抓取,尤其是這個 URL 從別處也能到達时。反過来,没寫属性的連結也不保證一定會被抓,抓取预算、頁面层級、服務器响應都會影响结果。
所以更實际的問法是:這條連結是不是我希望蜘蛛走的路径?如果答案是否定的,用它来减少無效抓取是合理的;如果這條連結指向重要内容,就不该随手加上 nofollow。
三種属性分別表達什么
rel="nofollow"
最通用的信号,含义是別把這條連結当成我推荐的路径。适合用在明顯不属于編輯推荐的区域,比如未审核的用戶评论外鏈、广告位包裹的連結、第三方嵌入模块里的跳轉。
rel="ugc"
用戶生成内容的标记。它不是為了帮蜘蛛判断质量,而是說明這里的内容来自用戶,站点不為其背书。评论、论坛帖子里的連結用它就够了。
rel="sponsored"
付費或商业合作連結使用。作用和 nofollow 相近,但语义更明确。软文、联盟連結、带返佣的推荐位属于這一類。
三者都不會让 URL 消失,也不等于禁止索引。如果某個頁面确實不该出現在搜尋结果里,應该用 noindex 或 robots.txt,而不是指望 nofollow 帮你解决。
常见寫法與副作用
- 整站導航加 nofollow。有人為了集中權重,把菜單、分頁、頁脚連結全部加上属性,结果蜘蛛失去主要通路,新内容只能靠 Sitemap 被發現,抓取节奏往往更慢。
- 在 JS 里動態注入属性。連結由脚本生成、属性在渲染後才加上,蜘蛛未渲染时看到的可能是普通可跟随連結,行為並不稳定。需要控制抓取路径时,最好在 HTML 源碼里就寫好。
- 把 canonical 和 nofollow 混用。canonical 用来合並重复地址,本身不阻止抓取;再给它附加 nofollow 或 noindex,容易让信号互相打架。
- Sitemap 與 nofollow 並存。Sitemap 里列出的 URL 不经過連結属性,蜘蛛仍可能去抓。若某個地址确實不想被訪問,應同时從 Sitemap 和内鏈里移除,而不是只在一處加属性。
更稳妥的處理方式
- 重要内容保持普通可跟随連結,尤其是分類頁、詳情頁和新内容入口。
- 只對确實不希望蜘蛛走的那條路径加属性,范围尽量小。
- 把不抓和不索引分開考虑:前者用 robots.txt 或連結属性控制路径,後者用 noindex。
- 連結属性不能替代内鏈结构。蜘蛛本来就到不了的地方,加不加属性都没有意义。
用日誌驗證實际效果
寫完之後要確認蜘蛛到底走了哪條路。抓取日誌里能看到它請求了哪些 URL、来源頁面是什么。如果某個栏目長期没有来自導航的抓取請求,就要检查是不是在菜單或模板里加了属性。
站点後台的連結报告、URL 检查工具也可以用来抽查。改動之後不必每天盯着看,观察两到四周的抓取分布變化通常更有參考價值。
連結属性是抓取路径上的路标,不是開關。寫之前先想清楚:這條連結是要让蜘蛛走過去,還是让它绕開。