在服務器日誌里看到某條 URL 被蜘蛛訪問,而它来自一個标了 nofollow 的連結,很多运营者會疑惑:不是说不让跟吗?這類疑問通常源于把連結属性当成了绝對指令。對蜘蛛来说,nofollow 更像一個提示,而不是一道围墙。
連結属性各自在表達什么
常见的連結属性有三類,它們的语义和使用场景並不相同:
- nofollow:表示不背书、不传递信任,常用于用戶可提交内容、广告位或不想背书的站外連結。
- ugc:标明連結来自用戶生成内容,比如评论、论坛帖子。
- sponsored:标明連結是付費合作或赞助内容。
這些属性的共同点是告诉搜尋引擎“這個連結的關系需要区別對待”,但它們並不等于“禁止訪問”。蜘蛛是否請求連結指向的 URL,還要看该 URL 是否可訪問、是否被 robots.txt 挡住、服務器是否稳定。
蜘蛛遇到标注連結时的几種可能
實际抓取中,标注過的連結可能出現下面几種情况:
- 蜘蛛仍然抓取目标 URL,只是不把它当作信任传递的路径。
- 蜘蛛暂时不抓,但後續從其他入口發現同一 URL 时仍會抓。
- 蜘蛛不抓该連結,但目标 URL 已经通過 Sitemap、内鏈或外部連結進入抓取队列。
所以,判断一條 URL 會不會被抓,不能只看連結上有没有 nofollow,還要看它有没有別的發現路径。一個頁面如果只靠一條被标注的連結進入,而這條連結又是唯一入口,它的抓取優先級通常會下降。
内鏈上使用 nofollow 會改變抓取路径吗
站内連結是蜘蛛最主要的路径来源。给導航、面包屑、分頁或正文里的内鏈加 nofollow,蜘蛛仍可能通過其他入口到達目标頁,但這條路径變窄了。尤其是深层頁面,如果原本靠導航和列表頁层层递進被發現,把中間层标注掉,蜘蛛到達深层頁面的效率和频次都可能發生變化。
因此,内部連結通常不建议大面积使用 nofollow。更常见的做法是:让正常内鏈保持可跟,把真正需要控制的部分交给 robots.txt、canonical 或服務器端返回狀態碼来處理。
連結属性是路径管理工具之一,不是唯一手段。用它之前,先確認頁面的主要發現入口是不是會因此被切断。
分頁、篩選與排序連結的标注思路
列表頁的分頁連結、篩選參數、排序參數,是抓取路径里容易纠结的地方。分頁通常是通往更早内容的正经路径,随意标注 nofollow 可能让蜘蛛少走很多頁。篩選和排序參數則可能组合出大量相似 URL,更适合用 robots.txt 規則、參數處理或 canonical 来收敛,而不是简單把整块連結标注掉。
如果某個篩選组合确實没有獨立價值,也不要把列表頁上唯一的入口全部掐断。可以先看日誌:蜘蛛是否已经在抓這些组合,抓取频次是否挤占了重要頁面,再决定收敛方式。
标注之後怎么確認蜘蛛的實际行為
想確認 nofollow 是否影响了抓取,可以從日誌入手,按顺序做几件事:
- 篩選搜尋引擎蜘蛛的 User-Agent,確認目标 URL 是否仍被請求。
- 查看請求来源,判断蜘蛛是從哪個頁面找到這條 URL 的。
- 對照标注前後的抓取频次,看變化是短期波動還是持續下降。
- 观察同一批新頁面從上线到首次被抓的時間,判断發現路径是否變慢。
不要只凭一次日誌下结论。蜘蛛的抓取調度受服務器响應、頁面權重、站点整体更新频率等多方面影响,單次訪問與否不能直接說明属性失效。
几個常见誤区
- 给外鏈加 nofollow 就等于蜘蛛不抓。蜘蛛仍可能請求该 URL,只是不传递信任。
- 用 nofollow 代替 canonical。两者作用不同,canonical 處理的是重复内容归並,nofollow 處理的是連結關系。
- 全站内鏈加 nofollow 能省抓取预算。更可能让蜘蛛找不到入口,尤其是深层頁面。
把 nofollow、ugc、sponsored 当成路径管理的一部分,先確認頁面的發現入口、再决定标注范围,最後用日誌驗證實际效果。這样比把連結属性当作開關更接近蜘蛛真實的工作方式。