站点运营

站点运营:hreflang 與多語言版本自查,別让地区頁面互相竞争

多語言或多地区站点常把同一内容拆成多個版本,彼此關系却交代不清。本文梳理 hreflang 的基本規則、與 canonical 和 noindex 的配合方式,並给出一份可执行的自查清單與常见错誤,帮助站点把语種與地区版本的關系說明白,减少抓取和展示上的混乱。

站点运营

站点运营:hreflang 與多語言版本自查,別让地区頁面互相竞争

多語言或多地区站点常见的情况是:同一個产品、同一篇内容被拆成几個語言版本,但彼此之間没有明确的關系說明。用戶看到的是語言切換器,搜尋引擎看到的却是一堆内容相似、指向不清的頁面。hreflang 就是用来把這些關系讲清楚的标注,它不保證排名,但能减少版本之間互相打架的概率。

先判断是否真的需要 hreflang

如果站点只有一種語言,或者不同語言版本的内容差异极大、面向的市场完全分開,那么不标注也不一定出問题。真正需要 hreflang 的场景是:多語言版本内容高度對應,只是語言或地区不同,希望搜尋引擎把正确的版本展示给對應的用戶。

還有一種情况是地区差异,比如簡體中文面向大陆、繁体中文面向港台,語言代碼相近但地区不同,這时用 zh-CN、zh-TW 這類组合表達更清楚。

hreflang 的三個基本要求

  • 双向标注:A 頁面标注 B,B 頁面也必须标注 A。單向标注等于没标。
  • 自引用:每個頁面都要把自己也放進标注列表里,否則容易让搜尋引擎漏掉目前版本。
  • 預設版本:用 x-default 指定没有匹配到語言时展示的頁面,通常是語言選擇頁或英文主版本。

和 canonical、noindex 怎么配合

hreflang 解决的是给谁看的問题,canonical 解决的是哪個算主版本的問题,两者不冲突,但不能互相矛盾。如果 A 頁面的 canonical 指向 B 頁面,同时在 hreflang 里又说 A、B 是並列的語言版本,搜尋引擎就得花時間猜你的意图。

更常见的错誤是把某個語言版本设成 noindex,却仍然在別的頁面里用 hreflang 指向它。這样指向的是一個明确不想被索引的地址,标注基本失去意义。

容易踩的坑

  1. 只在一個語言版本上寫 hreflang,另一端完全没有對應标注。
  2. 語言或地区代碼寫错,用了不規范的寫法,導致标注無法被正确识別。
  3. 用 JavaScript 動態插入 hreflang,而頁面初始 HTML 里没有。蜘蛛不一定执行脚本,或者执行时机不稳定。
  4. 标注指向的 URL 與頁面實际地址不一致,多一個斜杠、少一個參數都會让标注失效。
  5. 語言切換器做成下拉框、按钮或纯 JS 跳轉,蜘蛛拿不到真實的連結地址。
  6. 把 hreflang 当成排名手段,指望标注之後排名立刻變化。

一次可执行的自查流程

  1. 導出站点所有語言版本的 URL,按語言和地区分類,確認每一條是否有對應版本。
  2. 检查每個頁面的 head 里是否存在 hreflang 标注,是否包含自引用和 x-default。
  3. 抽查双向關系:從 A 頁面出發能否找到 B,從 B 能否回到 A。
  4. 確認标注里的 URL 與 canonical、站点地图中的地址一致,避免尾斜杠、大小寫、协议不统一。
  5. 检查語言切換器輸出的是真實可抓取的 a 标簽連結,而不是依赖点击事件。
  6. 把多語言 URL 一並寫進 sitemap,必要时在 sitemap 里补充對應的語言标注。
hreflang 是說明頁面關系的工具,不是修复内容重复的萬能方案。如果两個語言版本内容几乎一样,只是在做關鍵詞覆盖,先想清楚這样拆分的必要性,再谈标注。

多語言站点的問题往往不在标注本身,而在标注背後的结构是否清晰。语種、地区、canonical、内鏈、站点地图這几件事保持一致,蜘蛛才不用在每個頁面之間来回猜测。把關系整理一次,比事後反复調整要省事得多。