canonical 標籤:同一頁多個網址該讓 Google 認哪個
同一頁長出六個網址,排名分數就被切成六份。canonical 標籤怎麼寫、六個常見錯誤,以及它跟 301、noindex 的分工。

Search Console 裡出現一行字:「重複,Google 選擇的標準網址與使用者指定的不同」。點進去一看,同一個產品頁有六個網址都被抓到了——有帶 ?utm_source=fb 的、有結尾多一條斜線的、有從不同分類路徑進去的,還有一個是 www 版本。頁面內容一模一樣,只是網址長得不一樣。
更尷尬的狀況是:客戶用公司名加產品名去 Google 搜尋,點進來的網址後面掛著一串廣告追蹤參數。那是三個月前投廣告留下來的版本,Google 把它當成正本收錄了。
這類問題不會讓官網掛掉,所以很容易放著不管。但它會慢慢吃掉排名——同一篇內容的分數被切成好幾份,每一份都不夠力。canonical 標籤就是用來處理這件事的工具:告訴搜尋引擎「這幾個網址其實是同一頁,請認這一個」。
Photo by Sevda Afshar on Unsplash
為什麼同一頁會長出好幾個網址
多數老闆的第一反應是「我網站只有一個網址啊」。但網址是由系統組出來的,只要組法不同,對搜尋引擎來說就是不同的頁。常見來源有這幾類:
- 追蹤參數:
?utm_source=、?fbclid=、?gclid=。廣告和電子報帶進來的流量都會掛這些。 - 排序與篩選參數:
?sort=price、?color=black、?page=1。商品列表頁最容易爆量。 - 網域與通訊協定:
http與https、www與非www,如果沒做轉址就是四個版本。 - 結尾斜線與大小寫:
/service/與/service、/Product與/product。多數伺服器會當成不同資源。 - 多重分類路徑:同一件商品同時掛在「廚房家電」和「熱銷商品」兩個分類下,有些購物車系統會各給一個網址。
- 首頁的多種寫法:
/、/index.php、/home。 - 列印版與預覽版:
/print、?preview=true,或是開發測試站整站被收錄。
想知道自己有幾個版本,最快的方式是在 Google 搜尋框輸入 site:你的網域.com 掃一遍,再去 Search Console 的「頁面」報表看「重複」與「替代頁面」這兩類被排除的網址有多少。數字通常比預期的大。
重複網址真正的代價
這件事的影響不是抽象的「SEO 不好」,而是三個具體的損失。
一、外部連結的分數被切散。假設有五個網站連到你的文章,但他們複製的網址各不相同——兩個帶 UTM、兩個是 www 版、一個是乾淨版。對搜尋引擎來說,這是五個頁面各拿到一票,而不是一個頁面拿到五票。排名靠的是集中度,不是總量。
二、抓取預算被浪費。搜尋引擎每天花在你網站上的抓取次數是有限的。如果多數次數都用在抓同一頁的不同參數版本,新發的文章和剛上架的商品就得排很久的隊。這在商品數上千的購物網站特別明顯。
三、搜尋結果顯示你不想要的那一個。如果沒有明確指定,搜尋引擎會自己挑一個當正本——可能挑到帶參數的、挑到舊版本、挑到列印版。客戶看到的就是那個網址,分享出去的也是那個網址,問題會一直滾下去。
canonical 標籤怎麼寫
它是一行放在 HTML <head> 區塊裡的標籤:
<link rel="canonical" href="https://www.example.com/product/abc" />
意思是:不管你是從哪個網址進到這一頁,請把分數都記在 href 指的那個網址上。實務上有幾個規則要守住:
- 用絕對網址,含
https://和網域。相對路徑在不同層級的頁面容易解析錯。 - 一頁只放一個。出現兩個以上,搜尋引擎可能全部忽略。常見意外是版型本身有一個、SEO 外掛又塞一個。
- 每一頁都自我參照。沒有重複問題的頁面,canonical 就指向自己。這會擋掉別人幫你加參數所產生的版本。
- 目標網址要回傳 200、可被索引。指向 404、301 或掛了
noindex的頁面,等於沒設。 - 目標網址不能被 robots.txt 封鎖。抓不到的頁面無法被當成正本。
- 它是建議,不是命令。如果你指定的那一頁內容明顯比較少、或實際上長得不一樣,搜尋引擎會自己改選。Search Console 的「網址審查」工具會同時顯示「使用者宣告的標準網址」和「Google 選擇的標準網址」,兩者不一致就是訊號。
六個常見的設定錯誤
這些錯誤的共同特徵是:設定看起來有做,但效果是負的。
- 全站 canonical 都指向首頁。外掛預設值沒改,或開發時複製貼上留下來的。結果是所有內頁都在說「我不是重點,首頁才是」,內頁可能陸續從搜尋結果消失。這是破壞力最大的一種。
- 分頁第二頁指回第一頁。商品列表或文章列表的第 2、3、4 頁,各自是不同的內容,應該自我參照。指回第一頁會讓後面幾頁的商品連結比較難被抓到。
- 測試站與正式站互指。把正式站整站複製到測試環境時,canonical 一起被複製過去。測試站的 canonical 指向正式站看似無害,但反向的情況——正式站指向測試站——會讓整站有掉出索引的風險。上線前全站掃一次。
- 用 canonical 處理多語系。中文頁的 canonical 指向英文頁,等於告訴搜尋引擎中文頁不用收。多語系要用
hreflang,canonical 各自指自己。 - 由 JavaScript 動態寫入。有些前端框架在渲染後才插入 canonical。搜尋引擎多半能處理,但多了一層不確定;更麻煩的是原始 HTML 裡已經有一個,JS 又加一個,變成兩個。
- canonical 和 301 混用。同一個網址既設了 canonical 指向 B,伺服器又 301 轉去 C。訊號互相打架,結果難以預測。
Photo by Maksym Kaharlytskyi on Unsplash
canonical、301、noindex 該用哪一個
這三個工具經常被混用。判斷標準其實很單純:看那個網址你還要不要留著給人用。
| 情境 | 該用 | 原因 |
|---|---|---|
| 舊網址不再需要,內容搬到新網址 | 301 轉址 | 訊號最明確,使用者也會被帶到正確的頁 |
| 兩個網址都要能開(追蹤參數、排序參數) | canonical | 頁面還要用,只是不希望被分開計算 |
| 站內搜尋結果頁、購物車、會員中心 | noindex | 本來就不該出現在搜尋結果 |
| 參數版本數量多到吃掉抓取預算 | canonical 搭配 robots.txt | 先指定正本,再減少無意義的抓取 |
| 內容被其他網站轉載 | 請對方加跨站 canonical | 讓分數回到原始出處 |
要提醒一點:canonical 和 robots.txt 封鎖不要同時套在同一個網址上。被 robots.txt 擋住的頁面,搜尋引擎讀不到裡面的 canonical,等於白設。
怎麼驗證設對了
設完不要只看程式碼,要看搜尋引擎實際怎麼判讀。四個步驟:
- 看原始碼。在頁面上按右鍵檢視原始碼,搜尋
canonical,確認只出現一次、網址寫得完整。前十個最重要的頁面都手動看一遍。 - 用 Search Console 網址審查。輸入網址後展開「索引」區塊,比對「使用者宣告的標準網址」與「Google 選擇的標準網址」。不一致就代表你的宣告沒被採用,通常是內容差異,或指向了不可索引的頁。
- 掃全站。用爬取工具(例如 Screaming Frog 的免費版,可掃數百個網址,一般中小企業官網多半夠用)把全站的 canonical 匯出成表格,排序後異常值會自己跳出來——例如一堆不同頁面指向同一個網址。
- 排程複查。換版型、裝新外掛、改購物車設定之後重新掃一次。canonical 是最容易被外掛覆寫的設定之一。
今天可以先做的三件事
不需要整站大改,按順序處理就好。
第一,先確認首頁與前五個主要頁面的 canonical 是自我參照。如果發現內頁全部指向首頁,這就是當下最優先的修正項,其他都可以等。
第二,到 Search Console 的「頁面」報表,把被標為「重複」的網址清單匯出來。看它們是從哪裡長出來的——參數、斜線、還是 www。找到源頭,一次處理一類,比逐頁改快得多。
第三,把 http 與非 www 版本的 301 轉址設好。這是一次性的伺服器設定,做完就少掉一批重複來源,比任何標籤都直接。
canonical 標籤的價值不在於讓排名往上衝,而在於讓已經做好的內容不要白白漏掉分數。對多數中小企業官網來說,這類「把漏洞補起來」的工作,投報率往往比再寫十篇新文章來得高。