向 Google 提供網頁的本地化版本

使用 hreflang 或 Sitemap 處理語言或地區專屬網頁

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

請注意,即使您並未採取任何行動,Google 仍有可能找到網頁的替代語言版本,但通常還是建議您明確指示語言或區域的專屬網頁。

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

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

指定替代網頁的方法

有三種方法可以向 Google 指定網頁的多種語言/地區版本:

HTML 標記

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

每個網頁變化版本的 <head> 元素都應該有一組 <link> 元素,裡面含有該網頁本身以及各個網頁變化版本的連結。每個網頁版本中的這組連結都是一樣的。請參閱其他規範。

每個連結元素的語法如下:

<link rel="alternate" hreflang="lang_code" href="url_of_page" />

lang_code
此網頁版本鎖定的支援語言/地區代碼,或使用 x-default 來比對網頁上的 hreflang 標記未明確列出的任何語言。
url_of_page
此網頁指定語言/地區版本完全符合規定的網址。
<link> 標記置於靠近 <head> 元素頂端。<link> 標記至少必須位於完整結構的 <head> 區段內,或是放在可能導致 <head> 過早結束的任何項目 (例如 <p> 或追蹤像素) 前方。如果不確定,請將轉譯網頁的程式碼貼到 HTML 驗證工具,確認這些連結的確位於 <head> 元素內部。

範例

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 不會根據這些網址中的特定語言子網域 (en、en-gb、en-us、de) 來判斷網頁的目標對象,因此您必須明確地對應正確的目標對象。

下列是要貼到上述所有網頁 <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>

所有方法的準則

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

支援的語言/地區代碼

hreflang 屬性的值是用於識別替代網址的語言 (採用 ISO 639-1 格式) 和/或地區 (採用 ISO 3166-1 Alpha 2 格式)。範例如下:

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

請勿單獨指定國家/地區代碼。 Google 不會自動根據國家/地區代碼衍生語言。如果您要簡化標示,可以單獨指定語言代碼。在語言之後加上國家/地區代碼,則可限定網頁在特定地理區域顯示。範例:

  • be:白俄羅斯文,與地理區域無關 (比利時法文)
  • nl-be:比利時荷蘭文
  • fr-be:比利時法文

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

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

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

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

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

疑難排解

常見錯誤

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

  • 缺少傳回連結:如果網頁 X 的連結指向網頁 Y,網頁 Y 的連結必須返回指向網頁 X。如果所有使用 hreflang 註解的網頁都缺少傳回連結,則可能導致註解遭到忽略或解讀不正確。
  • 語言代碼有誤:請確認您用來識別替代網址的語言 (採用 ISO 639-1 格式) 和/或地區 (採用 ISO 3166-1 Alpha 2 格式) 所使用的所有語言代碼無誤。單獨指定地區是無效的。

排除 hreflang 錯誤

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

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

這篇文章實用嗎?
我們應如何改進呢?