是的 —— 同一語言叢集中的每個本地化頁面都必須發布完整的 hreflang 集合,包括指向自身的連結,而每個替代頁面也都必須連結回來。「完整集合」意味著每個等效內容的本地化版本都有一個 rel="alternate" 連結元素,當存在通用登陸頁面時,還可以選擇性地加上一個 x-default 備援值。叢集中任何一個成員若省略了任何一列,就會產生一項單向宣告,搜尋引擎可以忽略它,因為其他網站不應在未經您同意的情況下將您的頁面聲明為其替代頁面。Hreflang Generator 會產生一個一致的區塊,您可以在每個成員上以相同方式安裝,這能讓叢集保持誠實,並消除互連時的猜測。Google 的本地化版本文件將自我連結與回連連結視為必要關鍵訊號,這就是為什麼安裝在英文頁面 head 中的集合必須與安裝在法文、德文、日文和 x-default head 中的集合完全一致。

does every localized page need the full set when i generate hreflang
每個本地化頁面是否都需要完整的 hreflang 集合

「完整集合」對語言叢集意味著什麼

完整集合是一組 rel="alternate" 連結元素,列舉某個內容的每個本地化等效版本。如果您的文章同時存在英文 (en)、法文 (fr)、加拿大法文 (fr-CA)、德文 (de) 和簡體中文 (zh-Hans) 版本,完整集合就是五個等效版本連結元素 —— 每個語言區域一個 —— 而該叢集中的每個頁面都必須包含相同的五行內容。無論您的叢集有三個成員還是三十個成員,同樣的邏輯皆適用;規則不會因規模而改變。

x-default 權杖很特殊。它並不代表一種語言。它用於識別一個提供給設定不符其他所列替代版本的使用者瀏覽的頁面,通常是國家選擇器或通用登陸頁面。一個集合中只能出現一個 x-default 列。新增兩個會產生重複的語言區域值,Hreflang Generator 會在標準化後以不分大小寫的方式拒絕它們。x-default 也是選擇性的 —— 僅在存在真正的備援頁面時才應包含它,而不是因為文件建議填入該欄位就加入。

為什麼自我連結與回連連結是不可或缺的

Google 將自我連結和回連連結記錄為必要關鍵訊號。hreflang 宣告描述的是本質上等效的頁面之間的關係,而這種關係只有在每個成員都指向包括自身在內的每個其他成員時才算完整。如果英文頁面宣告了德文、法文和日文,但德文頁面僅宣告了英文和法文,叢集就會被破壞。搜尋引擎可能會將缺失的宣告視為不可靠的,因為第三方可以發布一個競爭性的 hreflang 集合,並將您其中一個 URL 指向一個無關的網站;這種單方面的聲明不應成立。

互連可以防止這類濫用。當叢集中的每個頁面都包含相同的集合時,訊號就是雙向的,搜尋引擎就會將該叢集視為一個連貫的群體來信任。這就是為什麼 Hreflang Generator 為每個叢集輸出一個相同的區塊,而不是為每個頁面輸出獨特的片段:達到互連最簡單的方法就是將相同的 HTML 複製到每個 head 中。

使用 Hreflang Generator 建立完整集合

  1. 將每個本地化頁面列為 language_region | 完整合格的 URL。格式,每行一個替代版本,以字面上的垂直分隔符分隔,並將目前正在編輯的頁面列為其中一行。只有在存在真正的備援頁面時,才新增一個 x-default 列。每個 URL 都必須使用 http 或 https 完整合格表示,包括主機;相對參考和僅含通訊協定 (scheme-relative) 的參考會被拒絕,憑證和片段也一樣。
  2. 產生完整的逸出連結區塊並驗證每個語言區域。將資料列貼到 Hreflang Generator 中,即可產生可直接放入 head 的 HTML。該工具會標準化大小寫 (en-us 會變成 en-US)、驗證語言標籤格式、逸出會影響屬性的字元,並拒絕重複的語言區域。最小為兩列,最大為 100;對格式錯誤的輸入拒絕整個集合,可避免在靜默省略某個國家/地區的情況下複製部分輸出。
  3. 在每個替代頁面的 head 中安裝相同的集合。將產生的區塊原封不動地複製到叢集中每個成員的 <head> 中。每個本地化版本都必須發布相同的完整集合,包括指向自身的連結。然後爬取線上頁面,確認每個替代頁面都回傳 200 狀態,且 head 包含相同順序的相同資料列。

語言區域標籤格式與標準大小寫

產生器驗證的是標籤的格式與大小寫,而非登錄機關的成員資格。國家代碼不能單獨佔據第一個位置;第一個子標籤識別語言,地區標的則置於其後 (例如 fr-CA)。腳本子標籤區分書寫系統,例如 zh-Hans 和 zh-Hant。當存在多個針對特定國家/地區的法文版本時,諸如 fr 等通用語言頁面可作為輔助的備援。透過標準化來正規化大小寫,因此 en-us 會在該列被接受之前變成 en-US,zh-hant 會變成 zh-Hant。

輸入列標準形式目標對象
en-usen-US美國使用的英文
frfr通用法文,可作為叢集備援
fr-CAfr-CA加拿大使用的法文
zh-Hanszh-Hans簡體中文書寫系統
zh-Hantzh-Hant繁體中文書寫系統
x-defaultx-default給不符合條件的使用者的備援頁面 (非語言)

結構上整潔的代碼仍可能不受支援或不適用於特定對象。在部署之前,請根據最新的 Google 文件和實際的內容對象驗證每個預定的語言和地區;該工具檢查的是格式,而非適用性。

安裝區塊並確認互相連結

一旦區塊產生完畢,部署是工作流程中最簡單的部分。開啟每個本地化頁面,將相同的 HTML 貼到 <head> 中,儲存並發布。不要編輯個別資料列以「整理」它們 —— 成員之間出現差異是叢集損毀最常見的原因。選擇一種實作方法 (HTML head、HTTP 標頭或 XML sitemap),並保持同步;Google 將這些方法視為等效的,維護多份副本可能會產生差異。Hreflang Generator 專門產生 HTML head 元素。

部署後,從每個語言叢集中爬取一個樣本,並以機械化的方式比較集合。該工具無法存取遠端頁面或證明互相連結,因此這項驗證是您的責任。如果您管理的是一個有許多叢集的大型網站,像 批量 hreflang 標籤產生器操作指南 這類指南可以幫助您在不失一致性的情況下擴展流程。

悄悄破壞完整集合的常見錯誤

最常見的失敗是部分集合,其中一個頁面僅包含與其自身地區相關的替代版本,而非全部成員。第二個失敗是通過視覺審查但在標準化後被拒絕的重複語言區域值 —— 例如 en-US 和 en-us 會衝突並破壞集合。第三個是將國家代碼 (例如 ca 或 de) 單獨放在第一個位置;產生器會拒絕這些,因為第一個子標籤必須識別語言,而非地區。

其他陷阱包括跨叢集混用方法、在沒有真正備援的情況下新增 x-default,以及假設 hreflang 會翻譯內容。這些標籤描述的是本質上等效的頁面之間的關係;它們不會偵測語言、不會翻譯文案,也不保證搜尋結果。Google 可能會透過演算法識別頁面語言,並根據許多訊號來選擇結果。持續的品質取決於在新增、移除、重新導向或移至新的標準 URL 時更新所有非連結資料 —— 這正是 Google 的本地化版本指南 將 hreflang 視為持續維護工作而非一次性設定步驟的原因。