我發布的第一個國際網站有十一種語言版本,零 hreflang。總的來說,流量看起來不錯,所以幾個月來沒有人質疑它。然後柏林的一位同事在 google。de 上搜尋了我們的產品並獲得了英文頁面。不是德語的。德語版本存在,已被索引,並且比英文原版寫得更好。谷歌只是沒有理由喜歡它,所以它提供了指向它的連結最多的版本,這就是我們兩年來在 Twitter 上用英語宣傳的版本。
這就是故障模式 hreflang 的存在是為了防止,而且從你自己的市場內部是看不見的。你用自己的語言從自己的國家搜索,找到正確的頁面,然後得出結論一切正常。收到錯誤頁面的人是你從未聽說過的人,因為他們反彈了。
本指南涵蓋了從頭到尾的 hreflang:註釋是什麼、程式碼是如何建構的、您可以放置它的三個位置、使 Google 信任它的規則以及它如何與規範標籤和網站地圖互動。它是一組重點文章的中心 x-預設, 破壞實現的錯誤, 赫雷夫朗與規範,以及特定於框架的設定 下一個。js 和 字出版社.
TL;DR: hreflang 標籤是 a
rel="alternate" hreflang="xx-XX"註釋告訴搜尋引擎為每個使用者提供哪種語言和區域版本的頁面。該值是 ISO 639-1 語言代碼,可選加 ISO 3166-1 alpha-2 區域代碼,英國也是如此GB並且不是UK。 註釋必須是相互的:集合中的每個頁面都列出了每個版本,包括它本身,否則 Google 會丟棄該集合。您可以將其實現為 HTML<link>標籤、XML 網站地圖條目或 HTTPLink標頭,但每個 URL 集只有一種方法。這 赫雷夫朗產生器 在瀏覽器中建立所有三種格式並在發布程式碼之前對其進行驗證。
什麼是hreflang標籤?
hreflang 標籤是聲明 " 的註釋;此頁面的另一個版本適用於該語言和地區,並且它駐留在此 URL 處。"看起來像這樣:
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/" />
從左到右閱讀: rel="alternate" 說這是一個變體而不是不同的頁面, hreflang="fr-CA" 說這個變體適合加拿大的法語使用者,並且 href 給出絕對的 URL。這裡沒有任何指令。 Google 將 hreflang 視為有關要為給定搜尋者交換哪個 URL 的強烈提示,而不是它必須遵守的命令,並且當證據指向其他地方時,它會覆蓋該提示。
註釋在 Google's 中定義 頁面本地化版本的文件,並且代碼值來自 BCP 47,語言標籤的 IETF 標準。 Bing 支援相同的註釋。 Yandex 不使用 hreflang,而是依賴自己的區域設置,如果俄語市場是您計劃的一部分,這很重要。
什麼時候需要hreflang?什麼時候是浪費時間?
當相同的內容以多種語言存在,或以針對多個地區的一種語言存在時,您需要它。對於僅針對一個市場僅存在英文版本的網站,您不需要它,並且在那裡添加它除了添加標記之外什麼也沒做。
實踐中出現了三種形狀:
| 場地形狀 | 例子 | 需要hreflang嗎? |
|---|---|---|
| 一種語言,一種市場 | 僅限美國的 SaaS 行銷網站 | 不 |
| 多種語言 | /en/, /de/, /ja/ 同一頁面的版本 |
是的 |
| 一種語言,多種市場 | example.com/us/ 和 example.com/uk/,都是英語 |
是的,這是最常被錯過的情況 |
第三行是值得暫停的一行。兩個不同價格、運輸副本和拼字的英文頁面看起來就像爬蟲的複製品。如果沒有 hreflang,Google 會選擇一個並過濾另一個,這就是英國商店最終在 google。co。uk 上不可見而其美國商店則不可見的方式。註釋告訴谷歌,這些是故意的區域變體,而不是偶然的重複。
hreflang 程式碼是如何建構的?
該值有兩個部分,只需要第一部分。
的 語言 是 ISO 639-1 兩個字母的代碼,小寫: en, fr, de, ja, pt. 的 地區 是 ISO 3166-1 alpha-2 兩個字母代碼,大寫,以連字符連接: en-US, pt-BR, de-AT. 外殼是慣例而不是硬要求,因為語言標籤的匹配不區分大小寫,但當您遵循它時,每次程式碼審查都會更快。
人們犯錯的規則,按照我看到他們犯錯的順序:
- 英國是
GB.UK不是 ISO 3166-1 代碼。en-UK被默默地忽略,這比錯誤更糟糕,因為沒有什麼告訴你。 - 僅靠地區並不是一件事情。 沒有辦法說&引用;加拿大的每個人&引用;沒有命名語言。
hreflang="CA"無效。你寫en-CA和fr-CA作為單獨的條目。 - 拉丁美洲是
es-419. 這是聯合國 M49 數字區域代碼,在 BCP 47 中有效,當您的西班牙語針對的是該地區而不是專門針對西班牙或墨西哥時,這是正確的答案。 - 中國人通常想要一個文字,而不是一個國家。
zh-Hant對於傳統和zh-Hans對於簡化描述書寫系統,這是讀者關心的。zh-CN和zh-TW工作但將腳本與地理混為一談。 - 語言和區域是獨立的軸。
en-CA和fr-CA兩者都可以存在。所以可以en-US,en-GB, 和en-AU. 不要假設每個國家一頁或每種語言一頁;繪製您的網站真正服務的組合。
的 赫雷夫朗產生器 根據預期形狀檢查每個程式碼,並標記未識別的語言或區域值的子標籤,因此 en-UK 三週後,鍵盤故障而不是爬行故障。
hreflang 標籤去哪裡?
支援三種實施方法,效果相同。選擇是可操作的。
| 方法 | 它居住的地方 | 最好 | 成本 |
|---|---|---|---|
HTML <link> |
每頁's <head> |
大多數網站;最容易調試 | 每頁都包含全套內容,該全套內容隨著語言數量的增加而增長 |
XML 網站地圖 xhtml:link |
網站地圖條目 | 地點大,地點多 | 網站地圖必須保持同步;被拾取的速度較慢 |
HTTP Link 標頭 |
伺服器響應 | PDF 和其他非 HTML 檔案 | 需要伺服器配置;在瀏覽器中不可見's view-source |
頭部的 HTML 標籤:
<link rel="alternate" hreflang="en-US" href="https://example.com/us/pricing" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/uk/pricing" />
<link rel="alternate" hreflang="de-DE" href="https://example.com/de/preise" />
<link rel="alternate" hreflang="x-default" href="https://example.com/pricing" />
與網站地圖條目相同,需要 xhtml 已聲明命名空間 <urlset>:
<url>
<loc>https://example.com/us/pricing</loc>
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/us/pricing"/>
<xhtml:link rel="alternate" hreflang="en-GB" href="https://example.com/uk/pricing"/>
<xhtml:link rel="alternate" hreflang="de-DE" href="https://example.com/de/preise"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/pricing"/>
</url>
作為 HTTP 標頭,這是 PDF 的唯一選項:
Link: <https://example.com/us/whitepaper.pdf>; rel="alternate"; hreflang="en-US",
<https://example.com/de/whitepaper.pdf>; rel="alternate"; hreflang="de-DE"
每個 URL 集選擇一種方法。為同一頁面混合 HTML 標籤和網站地圖條目並不是致命的,但它為 Google 提供了兩個可能漸行漸遠的來源,而他們不同意的那一天,您將不知道哪一個獲勝。如果您已經在使用 製作網站地圖 XML 網站地圖產生器,網站地圖格式直接進入其中。
為什麼 hreflang 必須是互惠的?
因為單向聲明無法驗證。如果您的英文頁面上寫著 "法文版本就在那邊"法文頁面什麼也沒說,任何人都可以指著任何人。 Google' 的規則是雙方必須同意,並且 返回標籤要求 在其文件中明確說明:未確認返回標籤的註釋將被忽略。
規則的實用形式比聽起來簡單。在群組中的每一頁上放置完整、相同的註釋集,包括頁面本身的自引用條目。英文頁面列出了英語、法語、德語和 x-預設。法語頁面也是如此。德語頁面也是如此。所有這些都採用相同的區塊,位元組換位元組。
這種冗餘就是這個功能。它使該集能夠自我驗證,並使部署變得機械化:每個 URL 組構建該區塊一次並從單一來源渲染它,而不是每頁手動編輯。手動編輯是指一組九頁最終得到八個正確的區塊和一個缺失條目,而一個缺失條目足以讓 Google 不信任它所屬的對。
x-default 有什麼作用?
x-default 當沒有其他條目與使用者匹配時,指定要服務的頁面。有人在韓語土地上瀏覽英文、法文和德文版本的網站:沒有 x-default,谷歌猜測。有了它,你就可以做出決定,答案通常是語言選擇器或你的主要國際主頁。
它不是語言代碼,也不會取代語言代碼。您的英文頁面仍然需要自己的 en 或者 en-US 條目,以及 x-default 坐在一起作為一個包羅萬象的東西。 Google 將其視為可選,我根據需要對待它,因為 "演算法選擇某物"不是路由策略。這 完整的 x 預設指南 涵蓋指向何處、指向重定向時會發生什麼,以及為什麼語言選擇器頁面需要自行處理。
hreflang 和規範標籤如何互動?
他們回答不同的問題,不能互相矛盾。
規範標籤上寫著"在這些幾乎相同的 URL 中,索引這個。&引用; hreflang 註釋說 "這些 URL 是本地化的替代 URL,為每個用戶提供正確的 URL。"吃掉整個語言版本的失敗是跨語言規範化的:您的法語頁面聲明英語頁面為規範化,這會告訴 Google 從索引中刪除法語 URL,並且 hreflang 無法復活已規範化的 URL。
規則很短。 每一頁都規範化。 Hreflang 描述了這些自規範頁面之間的關係。弄清楚這兩個事實,兩個系統合作;讓它們交叉,更強的信號,規範,獲勝並悄悄刪除你的翻譯。 赫雷夫朗 vs 規範 透過組合進行工作,包括同時進行兩者的參數 URL 情況。
您如何測試 hreflang 的工作原理?
從搜尋控制台開始。國際目標報告列出了兩個重要的失敗,"沒有返回標籤和報價;和&報價;未知語言代碼和報價;在整個屬性中,這比一次檢查一個頁面要好。請注意,它存在滯後:修復僅在 Google 重新抓取受影響集合中的每個頁面後才會出現,因此一周沒有更改是正常的,並且沒有證據表明修復失敗。
然後爬行你自己的網站。任何出現 hreflang 註釋的爬蟲都會向您顯示每個 URL 攜帶的集合,您正在運行的檢查是群組中的每個頁面是否攜帶相同的完整區塊。按群組排序並查看計數;錯誤是一組五個條目中的四個條目。
然後檢查目標解析。每個 href 必須是傳回 200 且可索引的絕對 URL。重定向的目標仍然有效,但增加了跳躍,404s 毒害集合的目標,以及目標 noindex 這是一個矛盾:你正在為你告訴谷歌忽略的頁面做廣告。
最常發生什麼中斷?
大致按我找到它們的頻率排列:
- 缺少返回標籤。 A頁指向B,B不指向。谷歌丟棄了這對。
- 沒有 x 預設值。 無與倫比的用戶會得到谷歌猜測的任何版本。
- 非 ISO 代碼。
en-UK引線,然後是發明的引線,例如en-EU. - 相對網址。 hreflang 需要包含絕對 URL、協定和主機。
- 尾隨斜線不匹配。
/fr/和/frURL 是不同的,註解必須與可索引形式相符。 - 跨語言的規範指向。 取消整套。
- 混合方法。 相同 URL 的 HTML 標籤和網站地圖條目逐漸分開。
其中每一個都會產生看起來正確的標記。這就是 hreflang 乏味的原因:失敗總是沉默的。 12 個常見的 hreflang 錯誤 瀏覽每個內容,了解您將觀察到的症狀和解決方案。
如何產生和維護標籤?
對於少數 URL,手寫該區塊一次就可以了,第二次更改時會很痛苦。對於任何更大的東西,生成它。
的 hreflang 標籤產生器 每個版本採用一行 - 程式碼和絕對 URL - 並將區塊作為 HTML 連結標籤、網站地圖條目或 HTTP 標頭發出。它根據 ISO 形狀驗證每個程式碼,標記無法識別的子標籤,捕獲重複的程式碼,拒絕相對 URL,並在該集合沒有 x 預設時發出警告。它完全在瀏覽器中運行,因此映射整個國際架構的 URL 結構永遠不會上傳到任何地方。
對於已經模板化的網站,更好的長期答案是從路由配置中渲染區塊,使其不會漂移。就是這樣 下一個。js 和 字出版社 指南涵蓋:區域設定圖的一個真實來源、在群組中的每一頁上呈現完整倒數集的一個元件或過濾器。然後,生成器就是您用來檢查輸出而不是產生輸出的東西,一旦網站超過幾十個 URL,這就是正確的分工。
如果您同時組裝技術 SEO 層的其餘部分,則 元標籤產生器 處理每頁標題和 robots.txt 產生器 涵蓋爬行指令。這 hreflang 工具指南 對產生器本身進行更深入的研究。
常見問題
什麼是hreflang標籤?
hreflang 標籤是 a rel="alternate" hreflang="xx-XX" 註釋告訴搜尋引擎為給定使用者服務的頁面的哪種語言和區域版本。它有助於國際網站在每個市場中對正確的版本進行排名,並防止幾乎相同的區域頁面被過濾為重複。
如果我的網站只有英文版,我需要 hreflang 嗎?
僅當您使用單獨的 URL 針對多個英語市場時。單一市場的單一英文網站不需要 hreflang。美國和英國的單獨商店(均為英文)確實需要它,因為如果沒有註釋,這兩個商店看起來就像是重複的。
該地區是否需要 hreflang 代碼的一部分?
不需要語言代碼,區域是可選的。 en 本身是有效的。沒有語言的地區是無效的:沒有命名語言就無法瞄準一個國家。
hreflang 保證 Google 顯示哪個頁面嗎?
不,Hreflang 是一個強訊號,而不是指令。當其他證據(例如 user' 的明確語言設定或查詢語言指向其他地方時,Google 仍然可以提供不同的版本。
hreflang 變更需要多長時間才能生效?
Google 必須重新抓取該集中的每個頁面才能確認返回標籤,因此更改通常需要幾天到幾週的時間,具體取決於您的網站抓取的頻率。搜尋控制台中的國際目標報告在同一延遲內更新。
我可以將 hreflang 和規範標籤一起使用嗎?
是的,你應該。每個頁面都規範化,hreflang 描述了這些自規範頁面之間的關係。將一種語言版本規範化為另一種語言版本會將其從索引中刪除並取消 hreflang 集。
Bing 支援 hreflang 嗎?
是的。 Bing也支持同樣的觀點 rel="alternate" hreflang 註釋。 Yandex 不使用 hreflang,而是依賴自己的區域設定。
hreflang 標籤應該在 HTML 或網站地圖中去哪裡?
要么有效。 HTML 連結標籤更容易調試,是常見的選擇。網站地圖條目使頁面頭保持傾斜並適合具有許多區域的網站。每個 URL 集使用一種方法,而不是兩者都使用。



