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

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

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

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

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

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

指定替代網頁的方法

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

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

  • 每個語言版本都必須列出自己本身以及所有其他語言版本。
  • 替代網址必須是包含傳輸方式 (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="http://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 此網頁專屬語言/地區版本的完整網址。

範例

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

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

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

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

<head>
 <title>Widgets, Inc</title>
  <link rel="alternate" hreflang="en-gb"
       href="http://en-gb.example.com/page.html" />
  <link rel="alternate" hreflang="en-us"
       href="http://en-us.example.com/page.html" />
  <link rel="alternate" hreflang="en"
       href="http://en.example.com/page.html" />
  <link rel="alternate" hreflang="de"
       href="http://de.example.com/page.html" />
 <link rel="alternate" hreflang="x-default"
       href="http://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: <http://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <http://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch",
      <http://de.example.com/file.pdf>; rel="alternate"; hreflang="de"

Sitemap

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

Sitemap 規則:

  • 請依照下列方式指定 xhtml 命名空間:
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • 為每個網址單獨建立一個 <url> 元素。
  • 每個 <url> 元素都必須包含指出網頁網址的 <loc> 子元素。
  • 每個 <url> 元素都必須包含子元素 <xhtml:link rel="alternate" hreflang="supported_language-code">,並在其中列出包括該網頁本身在內的每個替代版本。這些 <xhtml:link> 子元素的順序並不重要,但建議您採用同樣順序,方便檢查錯誤。
  • 請參閱其他規範

範例

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

  • www.example.com/english/page.html,適用於英文使用者。
  • www.example.com/deutsch/page.html,適用於德文使用者。
  • www.example.com/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>http://www.example.com/english/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/schweiz-deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
</urlset>

支援的語言/地區代碼

hreflang 屬性的值能夠識別替代網址的語言代碼 (採 ISO 639-1 格式),也能夠識別地區代碼 (如果選用的話,採 ISO 3166-1 Alpha 2 格式),如果僅指定一個代碼,Google 會假設該代碼為語言代碼。此外,語言不一定要與地區相對應。例如:

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

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

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

另一種做法是指定文字版本和地區的組合,例如使用 zh-Hans-TW 對台灣使用者指定簡體中文。

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

如果沒有其他語言/地區符合使用者的瀏覽器設定,保留 hreflang="x-default" 值就會派上用場。建議您使用這個選用值,可以在沒有相符語言時控制網頁。不妨試試看在您網站的首頁上放置可點擊的地圖,讓使用者自行選擇所在的國家/地區。

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

疑難排解

常見錯誤

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

  • 缺少傳回連結:如果網頁 X 連結至網頁 Y,網頁 Y 也必須連結回網頁 X。如果任何一個使用 hreflang 註解的網頁缺少傳回連結,則可能導致系統忽略所有註解,或無法正確解讀註解。
  • 語言代碼有誤:請確認您用來識別替代網址的語言 (採用 ISO 639-1 格式) 和地區 (如果選用的話,採用 ISO 3166-1 Alpha 2 格式) 所使用的所有語言代碼無誤。請注意,單獨指定地區是無效的。

排除 hreflang 錯誤

您可以使用指定國際目標報告來排除最常見的問題。請等待一段時間,確保 Google 已檢索您的網頁,然後造訪報告的「語言」分頁,查看是否偵測到任何錯誤。

此外,還有許多第三方工具也可用來偵錯。下列是幾種熱門的工具。請注意,Google 並不負責維護或檢查這些工具。