在蜘蛛池和日常站点运营里,rel 属性中的 nofollow 经常被当成一個開關:有人預設加上它就等于告诉搜尋蜘蛛別看這個連結,于是入口頁里一旦批量使用 nofollow,就判断目标 URL 不會被發現。真實的机制要更细一些,下面把常见的几個疑問拆開讲。
nofollow 管的是權重與背书,不是連結是否存在
從 HTML 解析的角度看,一個带 href 並且标注了 nofollow 的 a 标簽,依然是頁面上的一條超連結:地址寫在 href 里,解析器能讀到,抓取調度器也能把它排進待抓取队列。nofollow 表達的语义更接近我不為這個連結背书、不要把權重算過去,而不是禁止訪問這個地址。
真正用来阻止抓取的是 robots.txt 里的 Disallow;用来阻止頁面進入索引的是 noindex。這几個東西经常被混在一起,但它們分別作用于不同环节:發現、抓取、索引。入口頁的問题通常卡在第一环,而 nofollow 影响的其實偏第三环附近的權重判断。
主流搜尋引擎對 nofollow 的處理並不统一
- Google 自 2019 年起把 nofollow 视為提示而非指令,連結仍可能被跟随,只是不再作為排名信号的背书。
- Bing 等引擎也基本承認 nofollow 主要是權重语义,對抓取层面的影响有限。
- sponsored、ugc 與 nofollow 属于同一類提示性标注,寫法不同、语义侧重不同,但都不等于禁止抓取。
所以,如果你的目标是让搜尋蜘蛛發現目标 URL,單靠 nofollow 通常達不到屏蔽效果;反過来,加了 nofollow 也未必就會阻断發現。具体表現還要看入口頁本身的可抓取狀態。
這些情况才更可能让 nofollow 連結白寫或白担心
比起 nofollow 属性本身,下面几点對 URL 發現的影响更直接:
- 入口頁被 robots.txt 屏蔽:整頁都進不去,連結有没有 nofollow 已经無關。
- 連結由 JavaScript 動態插入且未被渲染:HTML 源碼里根本没有這個 href,發現自然谈不上。
- 入口頁被 WAF、驗證碼或登入墙拦截:抓取端拿到的是拦截頁,連結不出現。
- 入口頁設定了 noindex:頁面不進索引,也會影响後續回訪频率,進而影响新連結被發現的及时性。
- 連結地址寫错、返回 404 或 410:抓取端跟過去也是空手而归。
先把入口頁能被正常抓取、連結在 HTML 里真實存在這两件事做對,再讨论 nofollow 的取舍,顺序反了容易白折腾。
如果你确實不希望目标 URL 被抓取
真正要阻止抓取时,應该走這几步:
- 在目标 URL 所在目錄使用 robots.txt 的 Disallow 規則,並確認規則前缀匹配正确。
- 如果只是不想让頁面進索引,用 noindex,同时不要用 Disallow 屏蔽,否則爬虫看不到 noindex。
- 不要在入口頁依赖 nofollow 来做屏蔽,它達不到這個目的。
- 改完規則後通過服務器日誌观察目标 URL 的訪問量是否真的下降,而不是靠猜测。
做入口頁时的一個實用判断顺序
- 入口頁是否返回 200,且連結在响應体里直接可见,而不是 JS 渲染之後才出現。
- 目标連結是否以 a 标簽形式存在于 HTML 源碼中,绝對連結或相對連結都可以。
- 入口頁自身是否需要被索引:需要就放開,不需要就 noindex,但不要用 robots.txt 一刀切。
- nofollow 只在有明确语义需求时使用,比如赞助内容、用戶评论区的連結。作為蜘蛛池入口頁,随意叠加 nofollow 只會让你更难判断問题出在哪一层。
總结一句:nofollow 影响的是連結的權重语义,而不是發現與抓取這個動作本身。想控制能不能被發現,看的是入口頁可抓取性、連結是否寫在 HTML 里、以及有没有被 robots.txt 或拦截层挡住;這几個變量弄清楚,比纠结属性寫法有用得多。