Hreflang 是一個 HTML 屬性,用來告訴搜尋引擎應該將哪個語言與地區版本的頁面顯示給哪些使用者。它以 rel="alternate" hreflang="xx-YY" link 元素的形式出現在每個屬於多語系或多國內容群組之頁面的 head 內。像 Google 這類搜尋引擎會讀取這些標記,以理解不同語言或目標地區中對等頁面之間的關係,進而協助它們將正確的網址提供給正確的受眾。Hreflang 並不是翻譯工具,它不會變更頁面上的實際語言,也不會單獨保證任何特定的搜尋結果。這個屬性描述的是實質對等頁面之間的關係,讓搜尋引擎能根據使用者的語言設定、位置及其他訊號,選出最合適的版本。Hreflang 正確使用時,能降低西班牙語使用者被帶到英文頁面、或加拿大使用者在已有專屬加拿大版本的情況下卻看到美國商店頁面的機率。

就 SEO 而言,hreflang 之所以重要,是因為搜尋引擎必須自行猜測該顯示哪個網址。少了明確的標記,一個關於冬季雪胎的英文頁面,其排名可能會超越專屬加拿大的法文頁面,即使該使用者是從蒙特婁進行搜尋。Hreflang 標記消除了這種臆測,讓國際流量留在真正為他們撰寫的頁面上,進而提升點擊率、降低跳出率,並向搜尋引擎傳遞各地區的內容品質訊號。

what is hreflang in seo
what is hreflang in seo

Hreflang 標記告訴搜尋引擎什麼

每個 hreflang link 元素都帶有三項資訊:語言值、選填的地區或文字修飾子,以及對等頁面的完整網址。搜尋引擎會交叉比對同一組中所有頁面的 hreflang 值,因此群組中的每個頁面都必須列出其他所有頁面,包括指向自身的連結。Google 的文件將自我參照與回傳連結描述為必要訊號,而單向宣告可能會被忽略,因為其他網站不應能單方面主張你的頁面作為它的替代版本。

hreflang 屬性並不會完全凌駕使用者的語言偏好。搜尋引擎將 hreflang 視為眾多訊號之一,仍可能在使用者的設定、查詢或瀏覽紀錄指向其他方向時,顯示不同的版本。這個標記能確保的是,搜尋引擎已被告知整個群組的存在,因此能夠刻意做出選擇,而非偶然為之。

語言環境值的結構

hreflang 值遵循瀏覽器與搜尋引擎所使用的 IETF 語言標記規格所定義的結構。第一個子標記必定是取自 ISO 639-1 清單的兩字母語言代碼,且不能單獨作為國家代碼。在語言之後,選填的四字母文字子標記可用來區分書寫系統,而選填的兩字母地區子標記則可用來指定國家。大小寫會在處理過程中被標準化,因此 en-us 會被視為 en-US,zh-hant 會被視為 zh-Hant,這代表下方表格中的標準形式才是讀者與搜尋引擎在渲染後的標記中會看到的內容。

語言環境形式結構典型用途
en僅語言作為多個國家專屬英文頁面備援的一般性英文頁面
en-US語言加地區針對美國市場的英文內容;標準大小寫要求地區代碼為大寫
fr-CA語言加地區加拿大法語內容,與歐洲法語有所區隔
zh-Hans語言加文字中國大陸與新加坡使用的簡體中文內容
zh-Hant語言加文字台灣、香港及澳門使用的繁體中文內容
x-default特殊權杖給語言或地區設定不符合任何其他替代版本的使用者使用的一般登陸頁或國家選擇器

x-default 值根本不是一種語言;它代表的是一個備援頁面,給那些語言或地區不符合組內任何其他替代版本的使用者,這通常是國家選擇器或一般性的全球登陸頁。整個群組中只能出現一個 x-default 列,因為兩個互相競爭的備援會抵銷將使用者導向單一通用目的地的意義。

Hreflang 標記在 HTML 中的位置

搜尋引擎接受三種位置的 hreflang:HTML head 內的 link 元素、非 HTML 檔案(如 PDF)HTTP 回應標頭中,以及 XML 站點地圖中。Google 將這些方法視為國際化目標設定上的等效方式,這代表你應該挑選單一方法,並讓你的發布系統能夠保持其完整與同步。在 HTML、標頭與站點地圖之間維護三份副本會產生不一致,而不一致正是破壞一個原本乾淨的 hreflang 群組最快速的方式之一。

實作方式最適用於注意事項
HTML head link 元素CMS 中或手動編輯範本的常規網頁必須出現在群組中的每個頁面上,且包含含自我參照的完整集合
HTTP 回應標頭PDF、圖片及其他沒有 head 區段的非 HTML 檔案標頭必須由網頁伺服器或 CDN 加入,且仍須遵守自我參照規則
XML 站點地圖編輯每個 head 區段不切實際的大型網站每個網址對應每個語言環境都需一筆站點地圖項目;該檔案成為唯一真實來源

對多數以內容為主的網站而言,HTML head 是管理 hreflang 最容易的地方,因為標記會隨著範本一起傳遞,且在渲染後的頁面中可見。對於會釋出大量在地化 PDF 或產品圖片的網站,HTTP 標頭能避免強迫每個二進位檔案都包進 HTML 容器中。當語言環境集經常變動,或發布系統讓單頁編輯變得困難時,站點地圖表現出色,但它們需要嚴謹的驗證,因為任何一筆遺漏的項目都會悄悄從群組中移除一個替代版本。

如何透過 Hreflang Generator 建立完整的 Hreflang 集合

Hreflang Generator 會根據一份語言環境與網址對照列清單,產生一個可直接放入 head、已完成跳脫處理的 rel="alternate" link 元素區塊。每一列由一個語言或語言環境,後接對等頁面的完整網址組成,並以垂直線分隔。這個工具會為每一列回傳一個 link 元素,對屬性敏感字元進行 HTML 跳脫,將語言環境大小寫標準化,並拒絕格式錯誤的輸入,讓整個集合在產生時直接失敗,而不會輸出一個悄悄遺漏某個語言的不完整區塊。

  1. 盤點所有對等的在地化頁面,並使用「語言環境 | 完整網址」的格式為每個語言環境撰寫一列。納入目前正在編輯的頁面,且只有在確實存在可供語言或地區不符合任何其他替代版本之使用者使用的備援頁面時,才加入 x-default 列。
  2. 將各列貼入 Hreflang Generator 並產生完整的已跳脫 link 區塊。請確認語言環境欄位符合你受眾當前支援的語言與地區指引,因為這個工具檢查的是語言標記的形狀,而非特定搜尋引擎所支援的完整 ISO 註冊資料。
  3. 將完全相同的區塊安裝到每個替代頁面的 head 中,包括目前這個頁面本身。每個在地化版本都必須發布相同的完整集合,使自我連結與回傳連結能在整個群組中對齊。
  4. 檢索實際上線的頁面,確認每個頁面都列出了自己、列出了其他所有頁面,並回應為可用的 200 狀態。將任何缺失的對應連結視為缺陷,因為搜尋引擎會忽略單向宣告。

這個產生器最多支援 100 列,且至少需要兩列,包括目前這個頁面。網址必須使用 http 或 https 的完整網址,包括主機在內。相對參考、通訊協定相對參考、片段,以及內嵌的認證資訊都會被拒絕,這讓群組保持可定址性,並避免不同主機或子網域所提供版本之間的歧義。當某個語言環境被新增、移除、重新導向,或移至新的標準網址時,必須重新產生該集合並重新安裝到每個成員上,讓群組保持同步。

常見的 Hreflang 陷阱與預防方式

最常見的 hreflang 錯誤是單向宣告:頁面 A 指向頁面 B,但頁面 B 並未指回。因為搜尋引擎需要對應參照來確認關係,缺少回傳連結會導致整個群組被忽略。次常見的問題是混用實作方式:某個頁面在 HTML head 中列出其替代版本,但站點地圖卻宣告了不同的集合,這會產生兩個搜尋引擎無法調和的競爭訊號。

另一個常見陷阱是在需要語言代碼之處使用了地區代碼,例如單獨使用 hreflang="US"。第一個子標記必須識別語言,因此正確的形式是 hreflang="en-US"。像 en 或 fr 這類一般性語言頁面,在存在多個國家專屬版本時可作為備援列使用,但它們應與地區列並列,而非取代它們。將 x-default 與真正的語言混淆也相當常見;x-default 是備援權杖,不是翻譯目標,整個集合中只能出現一個 x-default 列。

重複的語言環境值會在大小寫不敏感的情況下於標準化後被拒絕,避免不小心以不同大小寫將同一個語言列出兩次。像 en-us 而非 en-US 這類語言環境大小寫錯誤,會在輸入處理過程中被標準化為 en-US,因此不會破壞群組,但一開始就以標準形式撰寫,能讓標記更易於稽核。

部署後驗證 Hreflang

在每個頁面都安裝完全相同的區塊後,請從每種語言中各取樣本進行檢索,並以機械方式比對 link 集合。每個頁面都必須列出自己、列出其他所有頁面,並回應為帶有預期在地化內容的 200 狀態。當某列指向重新導向、已過期的網址或軟性 404 時,搜尋引擎會悄悄從群組中移除該替代版本,並可能改為顯示無關的頁面。如需部署後檢查的結構化逐步說明,如何檢查多語系 SEO 準確度中的 hreflang 標記這篇指南更詳細地涵蓋了稽核步驟。

持續的品質取決於在新增、移除、重新導向或移至新的標準網址時更新所有成員。Google 的國際化文件將 hreflang 視為一種關係而非保證,因此結合乾淨的標記、連貫的內容架構,以及經驗證的伺服器回應,才能產生最強的訊號。在基礎標記規則方面,Google 的本地化版本文件以及 WHATWG 的HTML 替代連結規格是實作細節與邊角案例的權威參考來源。

若想進一步了解,請參閱 Hreflang Generator 替代方案:瀏覽器端標記建構工具