做蜘蛛池入口頁时,经常有人問:目标連結外面套一层 rel="nofollow",搜尋蜘蛛還會不會顺着抓?這個問题看着琐碎,其實牵扯到 nofollow 的本意,以及它在實际抓取流程里的邊界。
nofollow 到底在表達什么
rel="nofollow" 最早是為了對付评论区、论坛簽名里的垃圾連結,语义是“這個連結不是我背书的,別把權重传過去”。它约束的是權重传递和信任背书,而不是“禁止發現這個 URL”。
後来主流引擎把 nofollow 從“指令”降級成了“提示”。也就是说,即使加了 nofollow,搜尋蜘蛛仍然可能抓取、甚至索引该頁面,只是不把連結權重算進去。所以從 URL 發現的角度看,nofollow 從来不是一道墙。
加在入口頁目标連結上,實际會發生什么
- 蜘蛛仍可能抓取目标 URL,但抓取優先級和频率可能下降,行為不稳定;
- 目标 URL 拿不到連結层面的權重,對排名基本没有正向帮助;
- 不同引擎解讀存在差异,同一個配置在不同搜尋蜘蛛那里表現可能不一样。
換句话说,如果你的目的是“让搜尋蜘蛛發現並抓取目标 URL”,加 nofollow 属于自己给自己添堵——它没堵死,但也没帮上忙。
nofollow、ugc、sponsored 別混着用
這三個都是“不背书”的标记,但指向的场景不同:nofollow 用于不想推荐的普通外鏈,ugc 用于用戶生成内容,sponsored 用于付費广告或赞助連結。放在蜘蛛池入口頁的目标連結上都不合适,因為它們表達的语义是“這個連結不可信”,而入口頁的核心任務恰恰是让蜘蛛認可並跟進這個連結。
几種“加了 nofollow 但没起作用”的情况
- 属性位置寫错,比如寫在 href 外面,變成無效标记;
- 連結由 JavaScript 後置插入,蜘蛛渲染前後看到的属性不一致;
- 目标不是 a 标簽的超連結,而是图片、按钮或纯文本,蜘蛛本来就靠 href 识別;
- 同时用 canonical 指向目标 URL,两個信号互相打架,结果更难预测。
真控制抓取,该用什么
nofollow 不是抓取開關。想限制蜘蛛訪問某些路径,用 robots.txt 的 Disallow;想控制頁面是否進入索引,用 meta robots 里的 noindex。這两者才是“指令”級別的東西,nofollow 只是提示。
反過来说,在入口頁给目标連結加 nofollow,属于用错了工具:既没有真的挡住抓取,又损失了連結本身可能带来的信号。真要排查抓取問题,從日誌、服務器响應、連結层級入手,比在 rel 属性上做文章有效得多。
更稳妥的做法
- 入口頁的目标連結保持普通超連結形式,用可被抓取的 a href;
- 不要叠加 nofollow、ugc、sponsored 這類“不背书”标记;
- 需要控制抓取就改 robots.txt,需要控制索引就改 meta robots;
- 把精力放在入口頁的内容质量、模板差异化、更新频率和訪問速度上。
nofollow 管的是“信不信”,不是“看不看”。想靠它挡住搜尋蜘蛛,基本是白費功夫;想靠它優化抓取,也帮不上忙。
最後提醒一句:蜘蛛的實际行為受站点整体质量、抓取配額、連結层級等多重因素影响,任何單点設定都不保證结果。與其纠结一個属性,不如把入口頁的可訪問性和連結结构做扎實。