向 Google 說明網頁的本地化版本

如果您的網頁有多種語言或地區版本,請向 Google 說明這些不同的變化版本。如此有助於 Google 搜尋根據語言或地區將使用者導向最適當的網頁版本。

請注意,即使您不採取任何行動,Google 也可能自行找到網頁的替代語言版本,但還是建議您明確指明語言或區域的專屬網頁,一般來說這會是最好的做法。

如果您的網站符合以下情形,就建議您指明替代網頁:

  • 如果您只翻譯了網頁範本,例如導覽和頁尾,主要內容仍使用單一語言。對於大多數內容都是使用者自製內容的網頁來說,這是很普遍的情況,例如論壇網頁。
  • 如果您的網頁大部分內容都很類似,而且只使用了一種語言,但是少數內容有專屬的地區版本。舉例來說,您網站上的英文網頁可能有不同版本,分別適用於美國、英國和愛爾蘭的使用者。
  • 如果您的網站內容已全部翻譯成多種語言。例如,您的每個網頁都分別提供了德文和英文版本。

除非本地化版本網頁的主要內容部分仍保留原文,否則 Google 不會將其視為重複網頁

指定替代網頁的方法

有三種方法可以向 Google 指明網頁有哪些語言/地區版本:

從 Google 的角度來看,這是三個對等的方法,您可以選擇最適合自己網站的方法。雖然您可以同時使用這三種方法,但這對搜尋並沒有任何好處。事實上,相較於只選擇一種方法來使用,管理三種實作可能更為困難。

透過 hreflang 向 Google 說明您內容的變化版本,以便讓 Google 瞭解這些網頁都是相同內容的本地化版本。Google 不會使用 hreflang 或 HTML lang 屬性來偵測網頁的語言;而是會透過演算法來判定語言。

適用於所有方法的通用規範

  • 每個語言版本都必須列出本身以及所有其他語言版本。
  • 替代網址必須是包含傳輸方式 (http/https) 的完整網址,因此
    請使用 https://example.com/foo,「不要使用」 //example.com/foo/foo
  • 替代網址不一定要位於相同的網域。
  • 如果您為使用相同語言但來自不同地區的使用者指定了數個替代網址,建議您同時提供一個總括性網址,以便服務使用該語言但沒有指定地理區域的使用者。舉例來說,如果您分別為愛爾蘭 (en-ie)、加拿大 (en-ca) 和澳洲 (en-au) 的英文使用者提供專屬網址,請另外提供一個通用的英文網頁 (en),供美國、英國及所有其他英語系地區的搜尋者使用。或者,也可以選擇其中一個地區專屬網頁做為通用網頁。
  • 如果兩個網頁並未同時指向對方,系統即會忽略標記。這是為了不讓其他網站的人任意建立標記並冒稱其網頁是您網頁的替代版本。
  • 如果很難針對每種語言維護一套完整的雙向連結,您可以省略某些網頁上的部分語言;Google 仍會處理指向對方的網頁。但是,請務必在新擴充的語言頁面和原始/主要語言的頁面之間建立雙向連結。舉例來說,如果您最初以法文建立網站,並將網址置於 .fr,那麼在推出新的墨西哥文 (.mx) 和西班牙文 (.es) 網頁後,應該優先建立這兩者與主要 .fr 網頁間的雙向連結,而不是為這兩個同屬西班牙語系的新網頁 (.mx.es) 建立彼此間的雙向連結。
  • 請考慮為不相符的語言新增備用網頁,特別是在國家/地區或語言選取器或是有自動導向功能的首頁。請使用 x-default,例如:
    <link rel="alternate" href="https://example.com/" hreflang="x-default" />

HTML 標記

在網頁標頭中新增 <link rel="alternate" hreflang="lang_code"... > 元素,讓 Google 知道網頁的所有語言及地區變化版本。如果您沒有 Sitemap 或無法指定網站的 HTTP 回應標頭,就可以採用這個方法。

請在網頁每個變化版本的 <head> 元素中加入一組 <link> 元素,其中每個連結代表一種網頁變化版本,該元素所在的變化版本也必須包括在內。換句話說,每個網頁版本中的這組連結都會是一樣的。請參閱其他規範

每個 link 元素的語法如下:

<link rel="alternate" hreflang="lang_code" href="url_of_page" />
語法
lang_code 此網頁版本鎖定的支援語言/地區代碼,或使用 x-default 來比對網頁上 hreflang 標記未明確列出的任何語言。
url_of_page 此網頁專屬語言/地區版本的完整網址。

<link> 標記必須放在 HTML 中結構完整的 <head> 區段內。如果不確定放置位置是否正確,請將轉譯後網頁的程式碼貼到 HTML 驗證工具,確認這些連結確實位於 <head> 元素內部。 此外,請勿合併用於其他文件表示方式的 link 標記;例如,請勿合併 hreflang 註解與其他屬性,例如單一 <link> 標記中的 media

範例

Example Widgets, Inc 的網站為美國、英國和德國地區的使用者提供服務。下列網址含有大量相同內容,但每個地區的版本都有部分差異:

包含地區變化版本的網址
https://en.example.com/page.html 通用英文版首頁,其中包含美國至各國的運費資訊。
https://en-gb.example.com/page.html 英國版首頁,以英鎊顯示價格。
https://en-us.example.com/page.html 美國版首頁,以美元顯示價格。
https://de.example.com/page.html 德文版首頁。
https://www.example.com/ 未指定任何目標語言或語言代碼的預設網頁,提供選取器讓使用者自行選擇語言和地區。

請注意,Google 不會根據這些網址中的語言專屬子網域 (enen-gben-usde) 來判斷網頁的目標對象,您必須明確對應正確的目標對象。

在上述「包含地區變化版本的網址」表格中,所有列舉網頁的 <head> 部分都會包含以下這段 HTML 程式碼。這段程式碼會將美國、英國、一般英文使用者和德文使用者導向各自的本地化網頁,並將其餘使用者導向通用首頁。Google 搜尋會根據使用者的瀏覽器設定傳回適合的結果。

<head>
 <title>Widgets, Inc</title>
  <link rel="alternate" hreflang="en-gb"
       href="https://en-gb.example.com/page.html" />
  <link rel="alternate" hreflang="en-us"
       href="https://en-us.example.com/page.html" />
  <link rel="alternate" hreflang="en"
       href="https://en.example.com/page.html" />
  <link rel="alternate" hreflang="de"
       href="https://de.example.com/page.html" />
 <link rel="alternate" hreflang="x-default"
       href="https://www.example.com/" />
</head>

HTTP 標頭

您可以使用網頁的 GET 回應傳回 HTTP 標頭,向 Google 提供網頁的所有語言和地區變化版本。這種方法適用於非 HTML 檔案 (例如 PDF)。

標頭的格式如下:

Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
語法
<url_x> 替代網頁的完整網址,對應至指派給相關 hreflang 屬性的語言代碼字串。網址前後須有 <> 標記。例如:<https://www.google.com>
lang_code_x 此網頁版本指定的支援語言/地區代碼,或使用 x-default 來比對網頁上 hreflang 標記未明確列出的任何語言。

包括要求版本在內,您必須為每個網頁版本指定一組 <url>rel="alternate"hreflang 的值,並使用逗號分隔,如以下範例所示。系統會為每個網頁版本傳回相同的 Link: 標頭。請參閱其他規範

範例

假設有某個網站具備三種版本的 PDF 檔案,分別適用於英文使用者、瑞士地區的德文使用者,以及其他所有德文使用者,以下示範網站會傳回的 Link: 標頭:

Link: <https://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <https://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch",
      <https://de.example.com/file.pdf>; rel="alternate"; hreflang="de"

Sitemap

您可以使用 XML Sitemap,告訴 Google 每個網址的所有語言和地區變化版本。做法是新增 <loc> 元素來指定單一網址,並列出包含該網頁在內,每個語言/地區版本的 <xhtml:link> 子元素。因此,如果您的網頁有 3 種版本,Sitemap 就會有每個版本的網址,而每個項目都有 3 個相同的子項目。

Sitemap 規則:

  • 請依照下列方式指定 xhtml 命名空間:
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • 為每個網址單獨建立一個 <url> 元素,做法和處理其他 Sitemap 時相同。
  • 每個 <url> 元素都必須包含指出網頁網址的 <loc> 子元素。
  • 每個 <url> 元素都必須包含子元素 <xhtml:link rel="alternate" hreflang="supported_language-code">,並在其中列出包括該網頁本身在內的每個替代版本。這些 <xhtml:link> 子元素的順序並不重要,但建議您採用同樣順序,方便檢查錯誤。子元素在 Sitemap 中不會計入網址限制。
  • 將 Sitemap 上傳至您網站上 Sitemap 適用的目錄中。請注意,Sitemap 只能包含代管 Sitemap 的目錄的子網址。
  • 我們的 Sitemap 說明文件也適用於 Sitemap 擴充功能。請務必遵循一般 Sitemap 指南
  • 請參閱其他規範

範例

假設您的網站為全球英文使用者提供英文版網頁,並為全球德文使用者以及瑞士地區德文使用者提供兩種德文版網頁,且三者內容相同。那麼該網站的所有網址將如下所示:

  • www.example.com/english/page.html,適用於英文使用者。
  • www.example.de/deutsch/page.html,適用於德文使用者。
  • www.example.de/schweiz-deutsch/page.html,適用於瑞士地區的德文使用者。

這三個網頁的 Sitemap 則會如下:

<?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://www.example.com/english/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>https://www.example.de/schweiz-deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="https://www.example.de/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="https://www.example.de/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="https://www.example.com/english/page.html"/>
  </url>
</urlset>

支援的語言與地區代碼

hreflang 屬性的值由一或兩個值組成,並以連字號分隔。例如 en-UShreflang 屬性的第一個代碼是語言代碼 (採 ISO 639-1 格式),後面接著選用的第二個代碼,代表替代網址的地區代碼 (採 ISO 3166-1 Alpha 2 格式)。

如果要在比利時指定不同的語言使用者,可以使用下列語言和地區代碼:

  • 正確 (對比利時使用者顯示德文)de-be
  • 正確 (對比利時使用者顯示荷蘭文)nl-be
  • 正確 (對比利時使用者顯示法文)fr-be
  • 錯誤,因為第一個代碼適用於語言 (be 是白俄羅斯語言代碼)be

為了簡化標籤作業,您可以自行指定語言代碼。例如:

  • de:德文內容,不限地區
  • en-GB:對英國使用者顯示的英文內容
  • de-ES:對西班牙使用者顯示的德文內容

對於同種語言的不同文字版本,系統會根據國家/地區判斷正確的文字版本。例如,對台灣的使用者使用 zh-TW 時,系統會自動判斷相應的語言文字版本 (本例中為繁體中文)。您也可以使用 ISO 15924 格式明確指定文字版本,如下所示:

  • zh-Hant:中文 (繁體)
  • zh-Hans:中文 (簡體)

如同其他語言代碼,您也可以視需要指定地區。舉例來說,您可以使用 zh-Hans-US 為美國境內的使用者指定中文 (簡體)。

針對不相符的語言使用 x-default

如果沒有其他語言/地區符合使用者的瀏覽器設定,保留 x-default 值就會派上用場。如果使用者的語言設定與您網站的本地化版本不符,建議您採用這個值來指定備用網頁。雖然您可以將 x-default 值用於任何網頁,但這個值是專為語言選取器網頁所設計,因此最適合搭配這些網頁使用。

無須為 x-default 值指定語言代碼;網頁鎖定的是瀏覽器設定語言與您網站不同的使用者,與網頁本身的語言無關。

如要導入 hreflang="x-default" 註解,請在現有的 hreflang 註解中加入額外的 link 標記,並將 href 屬性設為在網站不支援使用者語言的情況下,您希望使用者到達的網址。舉例來說,HTML 導入作業可能如下所示:

<link rel="alternate" href="https://example.com/en-gb" hreflang="en-gb" />
<link rel="alternate" href="https://example.com/en-us" hreflang="en-us" />
<link rel="alternate" href="https://example.com/en-au" hreflang="en-au" />
<link rel="alternate" href="https://example.com/country-selector" hreflang="x-default" />

疑難排解

常見錯誤

以下是使用 hreflang 時最常見的錯誤:

  • 缺少傳回連結:如果網頁 X 連結至網頁 Y,網頁 Y 也必須連結回網頁 X。如果任何一個使用 hreflang 註解的網頁缺少傳回連結,則可能導致系統忽略所有註解,或無法正確解讀註解。舉例來說,假設 https://de.example.com/index.html 上有這個連結:
    <link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/index.html" />
    https://en-gb.example.com/index.html 上也必須有 hreflang 連結指回內容的 de 版本:
    <link rel="alternate" hreflang="de" href="https://de.example.com/index.html" />
  • 語言代碼有誤:請確認您用來識別替代網址的語言 (採用 ISO 639-1 格式) 和地區 (如果選用的話,採用 ISO 3166-1 Alpha 2 格式) 所使用的所有語言代碼無誤。請注意,單獨指定地區是無效的。

排除 hreflang 錯誤

有許多第三方工具可用來針對 hreflang 註解進行偵錯。下列是幾種熱門的工具。請注意,Google 並不負責維護或檢查這些工具。