WordPress 中的標準連結標記 (canonical tag) 是文件 <head> 中的一個 HTML <link rel="canonical" href="https://example.com/preferred-page/" /> 元素,作用是告訴搜尋引擎哪一個絕對 URL 是你想要它們索引的頁面的主要版本。這個元素只有一行,放在 head 中,並且必須指向一個正確的 host、路徑以及任何刻意保留的查詢字符串的絕對 HTTP 或 HTTPS URL,而像 #section 這類片段必須在產生標記前移除。由於 WordPress 經常會在多個 URL 下提供相同的內容(不論結尾斜線的有無、是否帶有 www、是否含追蹤參數,或是透過分類與標籤彙整頁),標準連結標記是將重複訊號整合到單一偏好網址最乾淨的方式。
大多數 WordPress 安裝環境最終都會在搜尋結果中出現重複或幾乎重複的 URL,因為這個平台允許同一篇文章透過多個路徑存取。單一文章可能出現在 /post-name/、/category/news/post-name/、/?p=123,以及任何數量的活動標記變體。在沒有明確的標準訊號下,爬蟲可能會自行從這些網址中挑選一個作為標準,進而分散連結權重並稀釋排名潛力。這就是 Canonical Tag Generator 存在的理由:它將單一偏好 URL 轉換成一個可立即貼上、已做 HTML 跳脫的 rel=canonical 連結元素,遵循瀏覽器標準的正規化規則並移除片段,讓同一個標準元素無論透過哪個 WordPress 編輯器或 SEO 外掛部署,行為都一致且可預測。

Canonical Tag Generator 會產生什麼
這個工具接受一個絕對 URL,並輸出一個 HTML 連結元素。在內部,它會將輸入套用瀏覽器在解析 URL 時所執行的同一種正規化處理:將 host 改為小寫、移除預設通訊埠、合併路徑中的點與斜線、排序查詢參數,並移除任何片段。結果會包裝成 <link rel="canonical" href="..." />,所有屬性都進行 HTML 跳脫,因此該元素可直接貼入 header.php 或外掛欄位中而不會破壞標記。
有兩項設計選擇對 WordPress 使用者特別重要。第一,工具拒絕接受相對 URL,因此你絕不會不小心產出 href="/post-name/",事後才發現搜尋引擎把你的 staging 主機當作標準。第二,移除片段代表行銷郵件中的深度連結 #faq 不會洩漏到你的標準訊號中 — 只會保留乾淨的頁面 URL。
產生你的標準連結標記
- 開啟 Canonical Tag Generator 並輸入完整的偏好 URL,包括
http://或https://、主機、路徑,以及任何你刻意希望被索引的查詢字串。 - 產生標記並閱讀工具在輸出旁顯示的正規化版本,然後與你實際希望搜尋引擎偏好的線上 200 頁面逐字元比對。
- 複製產生的
<link rel="canonical" ... />元素,使其保持單行 HTML 跳脫格式,準備放入 head 區段。 - 將該元素貼到相關 WordPress 樣板的 head 中 — 若需全站涵蓋,可在
header.php中設定標準,或透過子佈景主題鉤子;也可以由 SEO 外掛欄位逐頁提供。 - 在瀏覽器中載入線上頁面,檢視原始碼,確認恰好有一個
rel="canonical"連結元素,且其href與你產生的正規化 URL 完全相符。
在 WordPress 中放置標記
WordPress 提供四種實際可行的方式來部署產生的元素,而正確的選擇取決於你想要全站共用單一靜態標準連結、逐篇文章控制,或是佈景主題層級的邏輯。若要在每個頁面使用單一靜態標準連結,可編輯子佈景主題的 header.php 副本,將該元素直接貼在 <?php wp_head(); ?> 上方;或在 functions.php 中使用一個小型的 wp_head 鉤子,在對 href 套用 esc_url() 後輸出該連結。若需要逐篇文章的控制,熱門的 SEO 外掛會在文章編輯器中提供標準連結欄位;在該處貼上產生的 href,外掛就會代你將其包進 head。
若你偏好以程式碼維護邏輯而非依賴外掛,只要一個精簡的篩選器就足夠。下列模式接受任何你儲存在自訂欄位 _canonical_url 中的 URL,並透過 wp_head 輸出一個已跳脫的連結元素;只有當沒有覆寫值時,才會回退到 rel_canonical()。請將這個函式放在子佈景主題中,這樣佈景主題更新時才不會被清除,並記住 head 中任何時候都只能出現一個標準元素。
部署方式比較
下表比較在 WordPress 網站中部署標準連結標記的三種常見方式,讓你能依據自己的維護習慣與偏好 URL 變動頻率,選擇最適合的一種。
| 方式 | URL 存放位置 | 最適合的情境 | 更改單一 URL 的工作量 |
|---|---|---|---|
| 編輯子佈景主題的 header.php | 樣板中寫死的一行 | 全站使用單一偏好 URL | 編輯檔案並重新部署 |
| 在 functions.php 中使用 wp_head 鉤子 | 資料庫中的自訂欄位或選項 | 可程式化的逐篇文章邏輯並具備回退機制 | 更新欄位或選項值 |
| SEO 外掛的標準連結欄位 | 外掛資料表中的文章後設資料 | 希望透過 UI 操作並支援逐篇覆寫的編輯者 | 在文章編輯器畫面中編輯 |
若你需要維護大量舊式 URL 並執行行銷活動,逐篇文章的方式提供最大的彈性;若你的網站規模小,只想使用單一標準主機訊號,編輯過的 header 檔案則是維護成本最低的選擇。
部署後驗證標記
產生標記只是工作的一半 — 確認實際送出的 HTML 與你的預期一致,則是另一半工作。在桌面瀏覽器中開啟線上 URL,選擇「檢視原始碼」,在文件中搜尋 rel="canonical"。應當恰好只有一筆相符,且 href 屬性必須等於工具所顯示的正規化 URL。若你的網站有快取外掛,請先清除該 URL 的快取再重新檢查,否則你可能正在檢視一份過期的副本。
對於較大型的網站,可對具有代表性的頁面樣本進行爬取,並斷言每個 canonical href 都指向同一主機上的 200 回應。http 與 https 標準連結混用是稽核中最常見的問題之一,因此請特別留意通訊協定。回傳 404、重新導向或變更主機的標準目標,實際上等於沒有標準,因為爬蟲要麼忽略訊號,要麼自行挑選其他 URL。
WordPress 中需要標準連結標記的常見情境
WordPress 中有幾種情況經常會在沒有手動標準的情況下產生重複內容:分頁彙整頁、顯示完整文章內文的標籤與分類列表、每張上傳圖片的附件頁,以及搜尋結果頁,這些頁面都可能各自被索引。設定為文章永久連結(或彙整頁第一頁)的全站標準連結,可為爬蟲提供預設行為;逐篇文章的覆寫值則用於處理例外情況。
附加 UTM 參數的行銷活動是另一個常見的元兇。若你使用像 UTM Link Builder 這類工具建立可追蹤的活動連結,目的 URL 其實是同一頁,只是網址列看起來不同。會移除查詢參數的標準連結標記能將底層文章保留為主要版本,而你的分析工具仍然能看到帶有標記的變體。同樣地,若你發布聯合供稿內容並希望將爬蟲指引回原始來源,標準元素是最乾淨的做法,既不會讓讀者看不到文章。
將標準連結標記與更廣泛的 SEO 衛生習慣結合
標準連結標記只是多項訊號中的一種。它在搭配僅列出你偏好 URL 的 XML 網站地圖、不會意外阻擋標準目標的 robots.txt,以及不會與標準指令矛盾的 robots meta 標記時效果最佳。若你在 管理標準連結的同時維護 XML 網站地圖,請讓網站地圖中的 URL 列表與你的 canonical href 完全同步,以確保兩者永遠不會出現分歧。
對於發布多語系內容的網站來說,標準連結標記可處理同一語系內的重複版本,但跨語系的重複應放在 hreflang alternate 中,而不是標準連結標記中。Hreflang Generator 涵蓋了這個相鄰情境;正確地同時使用這兩種訊號,才能讓搜尋引擎理解在單一語系中哪個 URL 是偏好的,以及跨語系中存在哪些替代版本。MDN 關於 canonical 連結關係的文件,是確認你所實作行為的精確屬性語義時很好的參考資料。
發布前的最終檢查清單
在你認為標準連結標記已設定完成之前,請依序進行五項快速檢查:產生的 href 是與線上頁面使用相同通訊協定與主機的絕對 URL;該 href 與你 XML 網站地圖中顯示的一致;送出的 head 中恰好有一個 rel="canonical" 元素;標準目標回傳 200 回應;同頁面上任何 hreflang alternate 所參考的 URL,本身也都透過其各自的標準元素指回正確的 URL。當這五項都通過時,訊號即為一致,搜尋引擎就能將重複內容合併到你真正希望獲得排名的網址上。
若想深入了解,請參閱 如何檢查 Hreflang 標記以確保多語系 SEO 正確性。
若想深入了解,請參閱 建立安全的 .htaccess 檔案以支援 HTTPS 與自訂 404 頁面。
若想深入了解,請參閱 從 Excel 儲存格中擷取連結:實用方法。