站点运营

站点运营:多語言與多地区站点 hreflang 自查,別让蜘蛛和用戶走错語言版本

站点做多語言或多地区版本时,hreflang 标注是否正确,直接影响搜尋引擎和用戶能否找到對應語言的頁面。本文梳理語言與地区代碼的寫法要点、几種常见错誤,以及一套可执行的自查流程,帮助运营者按語言版本逐項核對,减少單向标注、canonical 冲突等問题長期存在。

站点运营

站点运营:多語言與多地区站点 hreflang 自查,別让蜘蛛和用戶走错語言版本

站点如果只做一種語言,hreflang 基本用不上;但只要出現過按語言或地区分目錄、分子域、分域名的情况,它就會變成一個绕不開的细节。寫得對,搜尋引擎能把不同語言版本看成同一组内容,按用戶的語言和地区给出更合适的入口;寫错或漏寫,轻則两個版本互相竞争,重則用戶從搜尋结果点進来,看到的是自己看不懂的語言。

先確認:你是否真的需要 hreflang

常见需要處理的场景有這几類:

  • 主站中文,另设 /en/ 英文目錄;
  • 同一種語言面向不同地区,比如简体與繁体,或不同國家的分站;
  • 用子域或多域名承载不同語言,例如 cn.example.com 與 www.example.com。

如果只是頁面里偶尔出現几段外语引用,不需要為它單獨标注。hreflang 用于整頁内容語言不同的情况,不是一個“加了總没坏處”的标簽。

基本寫法與三個關键点

語言、地区與預設版本

标准寫法是語言加可選地区,例如 zh-CN、zh-TW、en、en-US。語言用 ISO 639-1 两字母代碼,地区用 ISO 3166-1 两位代碼,中間用连字符连接。地区只在确實存在地区差异时才加,不必每個版本都补上國家代碼。

另外建议為没有命中任何語言或地区的用戶指定一個預設頁,用 x-default 标注,通常指向語言選擇頁或主站首頁。

最容易出错的几處

  • 單向标注:A 指向 B,B 却没有指回 A。hreflang 要求相互声明,缺一邊整组都可能失效。
  • 指向不可索引的地址:hreflang 里的 URL 被 robots 規則、canonical 或狀態碼挡在索引之外。
  • 和 canonical 打架:canonical 又指向另一個語言版本,等于告诉搜尋引擎這几個版本其實是同一頁。
  • 代碼寫错:把 zh-CN 寫成 zh_CN、zh-cn 或 cn,這類格式問题容易被直接忽略。
  • 两套声明互相矛盾:head 里寫一套對應關系,站点地图里寫另一套,最後谁都讀不准。

一次可执行的自查流程

  1. 列出現有語言和地区版本清單,確認每一頁是否属于同一個内容组。
  2. 抽查若干组頁面,逐條核對是否双向标注、URL 是否可直接訪問並返回 200。
  3. 检查語言切換器:跳轉後的地址是否就是 hreflang 里寫的那個,而不是先跳到首頁再让用戶自己找。
  4. 確認 canonical 指向本語言版本的自身地址,而不是跨語言指向。
  5. 如果使用站点地图标注,核對站点地图中的 URL 與頁面 head 中的声明是否一致。
  6. 改完後记錄變更時間,隔一段時間观察抓取與索引情况,確認没有出現新的異常。
如果站点只有一種語言、一個地区版本,硬加 hreflang 只會增加维護成本,並不會带来額外收益。

與其他設定的配合

hreflang 不是獨立生效的規則,它依赖几個前提:各語言版本都能被抓取、頁面本身有清晰的标题和正文、内部連結能互相找到。若某個語言版本長期没有内容更新,只是机器翻译的空壳,即便标注正确,用戶点進来也會很快离開,标注本身也就失去了意义。

同时要注意 URL 结构的一致性。語言目錄、參數、结尾斜杠如果各版本規則不统一,排查时很容易漏掉一组對應關系,最好是先统一命名习惯,再补标注。

复查节奏

新增語言版本、調整目錄结构、改版換域名时,都應该重新過一遍 hreflang。日常可以按季度抽查,重点看有没有新增頁面漏标、舊頁面改地址後没有同步,以及語言切換器是否還指向已经下线的舊地址。

把這份清單固定在运营文档里,每次動结构前先看一眼,比事後從日誌里找問题要省力得多。