Skip to content

hreflang 多語系標記:繁中、簡中與 x-default 的設定

hreflang 多語系標記:語言與地區代碼設定

同一份內容有多個語言版本時,hreflang 告訴搜尋引擎它們的對應關係,讓 使用繁體中文的人看到繁體版本,而不是隨機拿到簡體或英文版。

html
<link rel="alternate" hreflang="zh-Hant" href="https://example.com/zh-Hant/page">
<link rel="alternate" hreflang="zh-Hans" href="https://example.com/zh-Hans/page">
<link rel="alternate" hreflang="en" href="https://example.com/en/page">
<link rel="alternate" hreflang="x-default" href="https://example.com/page">

單語系網站不需要這個

hreflang 的用途是在 多個語言版本之間 建立對應。只有一個版本就沒有對應對象,設定好 <html lang="zh-Hant-TW"> 就足夠。

語言代碼的寫法

格式是 語言語言-地區,依 ISO 標準:

代碼意義
zh中文(不分繁簡,太籠統)
zh-Hant繁體中文(不分地區)
zh-Hans簡體中文(不分地區)
zh-TW台灣的中文使用者
zh-HK香港的中文使用者
zh-CN中國大陸的中文使用者
en英文(不分地區)
en-US美國的英文使用者
ja日文

zh-TW 的意思是「台灣使用者」,不是「繁體字」

這是繁簡中文最容易犯的錯。zh-TW 的地區部分指的是 使用者所在地,所以:

  • 香港與澳門的繁體中文使用者 不會 對應到 zh-TW
  • 在美國工作的台灣人,地區訊號也可能不是 TW。

若內容通用於所有繁體地區,用 zh-Hant 涵蓋範圍更廣。真的有針對台灣的內容(價格、法規、通訊方式)才用 zh-TW

需求建議代碼
通用的繁體內容zh-Hant
通用的簡體內容zh-Hans
台灣專屬內容(幣別、法規)zh-TW
香港專屬內容zh-HK
同時要涵蓋zh-Hantzh-Hant-TW 並列

必須雙向對應

單向宣告無效

每個語言版本都必須列出 完整的清單,包含自己在內

原因是無法驗證:任何網站都可以聲稱自己是某個熱門頁面的語言版本。要求對方也認可,這個宣告才算成立。

所以三個語言版本,每一頁都放同樣的四行:

html
<!-- 在 /zh-Hant/page 這一頁 -->
<link rel="alternate" hreflang="zh-Hant" href="https://example.com/zh-Hant/page">
<link rel="alternate" hreflang="zh-Hans" href="https://example.com/zh-Hans/page">
<link rel="alternate" hreflang="en" href="https://example.com/en/page">
<link rel="alternate" hreflang="x-default" href="https://example.com/page">
html
<!-- 在 /en/page 這一頁:內容完全相同 -->
<link rel="alternate" hreflang="zh-Hant" href="https://example.com/zh-Hant/page">
<link rel="alternate" hreflang="zh-Hans" href="https://example.com/zh-Hans/page">
<link rel="alternate" hreflang="en" href="https://example.com/en/page">
<link rel="alternate" hreflang="x-default" href="https://example.com/page">

包含自己這件事常被漏掉

/en/page 那一頁也要列出 hreflang="en" 指向自己。少了自我宣告,整組對應可能被判定不完整。

x-default

它指定 「所有語言都對不上時該去哪一頁」

html
<link rel="alternate" hreflang="x-default" href="https://example.com/">
適合當 x-default 的頁面說明
語言選擇頁讓使用者自己選
自動偵測語言的入口頁依瀏覽器語言導向
最通用的版本(通常是英文)退而求其次

不是必填,但沒有它時搜尋引擎只能自己挑一個當退路。

三種宣告位置

位置適合缺點
HTML 的 <link>一般網站語言版本多時檔頭會很長
HTTP 回應標頭PDF 等非 HTML 檔案需要伺服器設定
sitemap語言版本很多的大型網站較不直觀,但檔頭乾淨

HTTP 標頭

Link: <https://example.com/zh-Hant/doc.pdf>; rel="alternate"; hreflang="zh-Hant",
      <https://example.com/en/doc.pdf>; rel="alternate"; hreflang="en"

sitemap

xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml"
>
  <url>
    <loc>https://example.com/zh-Hant/page</loc>
    <xhtml:link rel="alternate" hreflang="zh-Hant" href="https://example.com/zh-Hant/page" />
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/page" />
  </url>
  <url>
    <loc>https://example.com/en/page</loc>
    <xhtml:link rel="alternate" hreflang="zh-Hant" href="https://example.com/zh-Hant/page" />
    <xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/page" />
  </url>
</urlset>

十種語言以上就改用 sitemap

十個語言版本表示每一頁的檔頭要放十一行 <link>。改寫在 sitemap 裡可以讓檔頭乾淨得多,也集中在一處好維護。

三種方式選一種就好,不要重複宣告。

和 canonical 的關係

每個語言版本的 canonical 都要指向自己

html
<!-- 在 /zh-Hant/page -->
<link rel="canonical" href="https://example.com/zh-Hant/page">
<link rel="alternate" hreflang="zh-Hant" href="https://example.com/zh-Hant/page">
<link rel="alternate" hreflang="en" href="https://example.com/en/page">

錯誤的做法是把所有語言版本的 canonical 都指向英文版,那等於說「只收錄英文版」,其他語言就不會出現在搜尋結果。

兩者管的是不同層次:canonical 說「這一頁的正式網址是哪個」,hreflang 說「這一頁有哪些語言版本」。

網址結構的三種選擇

結構優點缺點
子目錄example.com/zh-Hant/共用網域權重、好維護
子網域zh-Hant.example.com可分開部署權重較分散
獨立網域example.tw地區訊號最強成本高、權重完全分開

多數情況選子目錄

它共用主網域累積的權重,設定也最簡單。獨立網域只在有明確的地區營運需求(各地區獨立團隊、獨立金流)時才值得。

常見錯誤

這五種都會讓標記失效

錯誤後果
沒有雙向對應整組宣告可能被忽略
沒有列出自己對應被判定不完整
用相對路徑無效,必須是絕對網址
代碼寫錯(如 zh_TW 用底線)無效,hreflang 用連字號
指向的網址是轉址或 404該筆對應被忽略

底線與連字號不要混淆

  • hreflang連字號zh-Hant-TW
  • og:locale底線zh_TW
  • <html lang>連字號zh-Hant-TW

三個地方格式不同,複製貼上時容易出錯。

檢查清單

項目標準
每個語言版本都列出完整清單必備
清單包含自己必備
用絕對網址必備
代碼用連字號且符合 ISO 標準必備
各版本的 canonical 指向自己必備
x-default建議
三種宣告方式只用一種建議
指向的網址都回傳 200必備
<html lang>hreflang 一致建議

用 Search Console 驗證

Search Console 的國際目標定位報告會列出 hreflang 的錯誤,包含「缺少返回連結」這類雙向對應問題,那是人工檢查最難發現的一種。

常見問題

只有一種語言的網站需要 hreflang 嗎?

不需要。它的用途是在多個語言版本之間建立對應關係,只有一個版本就沒有對應對象。單語系網站設定好 <html> 標籤的語言屬性就足夠了。

為什麼一定要雙向對應?

因為單向宣告無法驗證。任何網站都可以聲稱自己是某個熱門頁面的語言版本,若不要求對方也認可,這個機制就會被濫用。所以每個版本都必須列出完整的清單,包含自己在內。

繁體中文的代碼該寫什麼?

建議寫 zh-Hant 表示繁體,或 zh-TW 指定台灣地區。要注意 zh-TW 的意思是「台灣使用者」而非「繁體字」,香港與澳門的使用者不會對應到它。若內容通用於各繁體地區,用 zh-Hant 涵蓋範圍更廣。

x-default 是什麼?

它指定「所有語言都對不上時該去哪一頁」。適合放語言選擇頁,或最通用的那個版本。它不是必填,但沒有它時搜尋引擎只能自己挑一個當退路。

hreflang 和 canonical 會衝突嗎?

不會,兩者管的是不同層次。每個語言版本的 正規網址 都應該指向自己,而語言標記則負責宣告版本之間的關係。錯誤的做法是把所有語言版本的正規網址都指向同一個語言,那會讓其他版本不被收錄。

延伸閱讀

參考資料:Google 搜尋中心:向 Google 告知網頁的本地化版本