我是吳承學,二十多年來手上經過的網站數不清,而 rel 屬性大概是最容易被「一鍵套用」害到的一環。很多網站的做法是外部連結一律加上一串 nofollow noopener noreferrer,內部連結也順手複製,結果把該傳的權重擋掉、把不必隱藏的來源藏起來。這三個值各自解決的問題完全不同,混在一起用,等於三把鑰匙開錯了鎖。這篇我把 nofollownoopenernoreferrer 各自的時機講清楚,順帶談外部連結的安全,以及內部連結誤加 nofollow 會付出什麼代價。

1. 三個 rel 屬性各自解決不同的問題

先把觀念釘牢:這三個值一個管 SEO、一個管安全、一個管隱私,彼此獨立。你要先問自己「我想解決哪個問題」,再決定加哪一個,而不是三個一起貼上去圖個安心。

1.1 nofollow 是給搜尋引擎的訊號

rel="nofollow" 告訴搜尋引擎「這個連結我不替它背書,別把權重傳過去」。它處理的是 SEO 層面的問題,和使用者體驗、安全完全無關。典型用途是你無法為對方內容負責的連結,例如使用者留言裡貼的網址、付費置入的連結。

1.2 noopener 是堵一個安全漏洞

rel="noopener" 處理的是安全問題。當你用 target="_blank" 在新分頁開啟連結,被開啟的頁面在某些情況下能透過 JavaScript 反過來操控你的原分頁,把它導去釣魚頁。加上 noopener 就切斷這條反向存取的路,讓對方碰不到你的視窗。它和權重傳不傳遞一點關係都沒有。

1.3 noreferrer 是隱藏來源資訊

rel="noreferrer" 讓瀏覽器在跳往目標頁時,不要送出「使用者是從哪一頁來的」這個來源資訊。它同時也有 noopener 的安全效果,但多帶了隱藏來源這個副作用。這個副作用有代價:對方的分析工具會把這批流量歸類成無來源,你在對方眼中就消失了。所以它不是預設就該加的東西。

rel 值 解決的問題 典型使用時機 對 SEO 的影響
nofollow 權重傳遞(SEO) 不願背書的外部連結、留言、付費連結 不傳遞權重
noopener 新分頁的反向操控(安全) 凡是 target="_blank" 的連結
noreferrer 來源資訊外洩(隱私) 需要隱藏來源時才用 無,但對方看不到來源流量

2. 外部連結的安全:noopener 與 noreferrer 的時機

外部連結最該優先顧的其實是安全,而不是急著擋權重。這一節談新分頁的風險,以及兩個安全相關的值怎麼取捨。

2.1 target=_blank 帶來的反向操控風險

用新分頁開啟外部連結很常見,但這個動作在沒有防護時會留下一個縫:新開的頁面可以透過瀏覽器提供的視窗參照,反過來把你的原分頁導向別處。使用者切回來時,看到的可能已經是一個偽裝的登入頁。這類攻擊不需要很高的技術門檻,卻能造成實際的帳號竊取。

2.2 只要開新分頁,就補上 noopener

我的原則很單純:凡是 target="_blank",就配 rel="noopener"。它切斷反向操控的路,又不影響任何 SEO 或分析數據,幾乎沒有副作用。現代瀏覽器多半已經預設這個行為,但我不依賴預設,該寫的還是明白寫出來,免得哪天環境不同就破功。標準寫法是這樣:

<a href="https://example.com/" target="_blank" rel="noopener">外部資源</a>

2.3 noreferrer 要不要加,看你在不在乎被對方看見

noreferrer 除了安全效果,還會把來源資訊一起藏掉。如果你連向的是合作夥伴、希望對方的分析後台能看到「這批流量來自你」,那就不要加 noreferrer,只用 noopener 就好。反過來,若基於隱私考量不想讓對方知道使用者從哪來,才加上它。我實務上偏好保留來源,因為那份「我替你導了多少流量」的紀錄,常常是後續談合作的籌碼。

3. nofollow 該加在哪、不該加在哪

nofollow 是三者裡最常被濫用的一個。用對地方它幫你把關,用錯地方它反而堵住自己的權重流動。

3.1 適合加 nofollow 的外部連結

當你連向一個無法為其內容負責、或不想替它背書的頁面時,就適合加 nofollow。例如留言區使用者自行貼的網址、你無法控管品質的外部來源。這是在告訴搜尋引擎:這條連結的存在有它的功能,但我不為它的內容站台。

3.2 付費與使用者內容,用更精準的值標示

除了 nofollow,還有兩個更精準的值可以取代它:付費、贊助性質的連結用 rel="sponsored",使用者自行產生的內容例如留言、論壇貼文用 rel="ugc"。它們讓搜尋引擎更清楚這條連結的來歷,而不是一律用 nofollow 含糊帶過。能標得更準,就別偷懶用同一個值。

3.3 內部連結不要加 nofollow

這是我要特別提高音量的一點:內部連結不要加 nofollow。內部連結的價值就在於讓權重與主題訊號在自己的網站裡流動,你替它加上 nofollow,等於親手把這條管道封起來。我看過不少網站在導覽列、頁尾連結上不明所以地加了 nofollow,結果權重卡在首頁流不出去,深層頁面長期弱勢。

4. 內部連結誤加 nofollow 的代價

內部連結誤加 nofollow 是個安靜的錯誤,它不會報錯、頁面照常運作,但你的站內權重分配已經悄悄壞掉。

4.1 權重無法在站內流動

搜尋引擎依賴 <a href> 在頁面之間傳遞權重與關聯。一旦內部連結被加上 nofollow,這條傳遞路徑就被切斷,首頁累積的權重送不到分類頁、分類頁也帶不動詳情頁。整個網站的權重分配會變得頭重腳輕,深層的重要內容拿不到它應得的支持。

4.2 最常見的誤加,是想省抓取預算

我遇過最多的情境,是有人想減少爬蟲去抓登入、購物車、篩選參數這類頁面,於是在指向它們的內部連結上加 nofollow。動機可以理解,但工具用錯了。nofollow 現在比較像是一個提示而非硬性指令,不保證爬蟲就不去抓,反而把權重傳遞的訊號弄亂。我處理過一個站,PM 好意地把所有功能性連結都加了 nofollow,想省預算,結果連帶影響了站內權重的正常流動,拆掉之後整體收錄反而更順。

4.3 想控制抓取或收錄,用對的工具

要控制爬蟲要不要抓某些路徑,該用的是 robots.txt 的 Disallow;要控制某頁不出現在搜尋結果,該用的是頁面上的 noindex。這兩個才是為抓取與收錄設計的工具,各司其職。nofollow 管的是權重背書,把它拿來當抓取控制,是把三件不同的事情混為一談。工具對上問題,設定才不會互相打架。

5. 我檢查 rel 屬性的三個動作

rel 的問題大多藏在細節裡,肉眼一頁頁看很難抓全。我用三個固定動作把它系統化地檢查完。

5.1 掃出所有 target=_blank,確認都配了 noopener

先用爬蟲工具把全站帶 target="_blank" 的連結抓出來,逐一確認有沒有配上 noopener。這是安全的底線,漏掉的就補上。這一步和 SEO 無關,但它保護的是使用者的帳號安全,我一向排在最前面做。

5.2 檢查內部連結有沒有多餘的 nofollow

把指向自己網域的連結全部拉出來,搜尋裡面有沒有 nofollow。內部連結原則上都不該有,找到就要追它為什麼被加,通常都是複製外部連結設定時順手帶過來的。拆掉這些多餘的 nofollow,是恢復站內權重流動最直接的一步。

5.3 把外部連結分類,套上對的 rel

最後檢視外部連結,依性質分類:一般引用只需要 noopener;不背書的來源加 nofollow;付費置入用 sponsored;使用者貼的內容用 ugc。分類做完再套值,你會發現真正需要 nofollow 的比想像中少很多,而每一條連結傳遞的訊號也變得清楚。

6. 常見問題

6.1 所有外部連結都加 nofollow noopener noreferrer 有沒有問題

有,這是把三個不同用途的值不分青紅皂白貼在一起。noopener 顧安全通常該加,nofollow 只在你不願背書時才需要,noreferrer 會連帶隱藏來源、讓對方看不到你導去的流量。逐條依需求判斷,比一鍵全套更妥當。

6.2 noopener 和 noreferrer 有什麼差別

noopener 只切斷新分頁反向操控原分頁的路,不影響其他東西;noreferrer 除了同樣有這個安全效果,還會把來源資訊一起藏掉。如果你希望對方的分析後台看得到流量來自你,就用 noopener 就好。

6.3 內部連結加了 nofollow 會怎樣

它會切斷權重在站內的傳遞,讓首頁的權重送不到深層頁面,整站的權重分配變得失衡。內部連結原則上都不該加 nofollow,發現有就該追查並移除。

6.4 想讓爬蟲別抓某些頁面,用 nofollow 對嗎

不對。nofollow 管的是權重背書,不是抓取控制,而且它比較像提示而非硬性指令,不保證爬蟲就不去。要控制抓取用 robots.txt 的 Disallow,要控制收錄用 noindex,工具要對上問題。

6.5 sponsored 和 ugc 一定要用嗎,還是 nofollow 就夠

nofollow 仍然有效,但 sponsoredugc 能更精準地告訴搜尋引擎連結的來歷:付費置入用 sponsored,使用者產生的內容用 ugc。能標得更清楚就用它們,對搜尋引擎理解你的連結結構有幫助。