站点运营

站点运营:多語言與多地区版本自查,別让蜘蛛把不同版本当成重复内容

多語言或多地区站点常见的麻烦,不是内容寫错,而是同一個頁面被当成两三個版本分別處理。本文梳理 hreflang 的自查清單,包括 URL 结构、互相指向、x-default、語言地区碼寫法,以及它和 canonical、Sitemap、robots.txt 的配合方式,帮助你把版本關系讲清楚。

站点运营

站点运营:多語言與多地区版本自查,別让蜘蛛把不同版本当成重复内容

做多語言或多地区站点时,最麻烦的情况往往不是内容寫错,而是同一篇内容被搜尋引擎当成两三個版本分別處理:抓取预算被分摊,權重被稀释,用戶也可能被带到語言不對的頁面。hreflang 就是用来處理這類關系的,但它不是一個加上就完事的标簽,配错反而會制造新的矛盾信号。

先分清两個概念

多語言指同一内容的不同語言版本,比如 zh-CN、en、ja;多地区指同一語言针對不同市场,比如 en-US、en-GB、en-AU。两者可以叠加,也可以只做其中一层。很多站点的混乱,就出在想用一個标簽同时表達語言和地区,结果既没讲清楚語言,也没讲清楚地区。

自查清單

  • 每個語言或地区版本是否有獨立、稳定的 URL,通常放在子目錄或子域名下,而不是用參數切換語言;
  • 所有版本是否互相指向,包括自己指向自己這一條,缺了它整组标注可能被忽略;
  • 是否設定了 x-default,指向語言選擇頁或預設版本;
  • 代碼寫法是否規范:語言用 ISO 639-1,地区用 ISO 3166-1 Alpha 2,中間用短横线连接,如 zh-CN;
  • 标注只出現在一個地方並保持一致:頁面 head 里的 link 标簽、HTTP 响應头、或 Sitemap 注释,不要三處各寫一套;
  • 是否存在指向 404、重定向地址、或被 robots.txt 屏蔽的地址。

三種常见错誤

單向标注

A 頁面指向 B 頁面,B 頁面却没有指回 A,搜尋引擎一般會倾向于忽略這组關系。标注必须是双向閉合的,新增一個語言版本时,记得回头补上其他版本的指向。

語言地区碼寫混

把 en 寫成 en-EN,把 zh-Hans 和 zh-CN 混着用,或者同一组里有的寫 zh-CN、有的寫 zh-cn,都属于给自己添乱。選定一套寫法後整站统一。

和 canonical 打架

如果英文頁面的 canonical 指向中文頁面,同时又用 hreflang 声明两者是不同語言的並列版本,两個信号就矛盾了。多語言頁面的 canonical 通常指向自身版本的規范地址,跨版本的合並交给 hreflang 表達。

和其他配置的配合

Sitemap 可以用注释形式带上 hreflang,适合版本較多、手工维護 head 容易遗漏的站点。robots.txt 注意不要把某個語言目錄整体挡住,否則那一组标注里就出現了無法抓取的地址。如果站内做了自動跳轉,也要留出让蜘蛛訪問其他版本的路径,別在跳轉里把它們藏起来。

上线後怎么驗證

  • 抽查几條 URL,確認 head 里的輸出和预期一致;
  • 查看服務器日誌中各語言目錄的抓取分布,某個版本長期零抓取通常說明指向断了或被挡住了;
  • 观察搜尋结果里不同地区用戶看到的版本是否符合预期。
hreflang 解决的是“哪個版本给谁看”的問题,它不替代内容质量,也不替代本地化。内容本身如果没有针對当地用戶做調整,标注再規范也只是把机器安排好,用戶未必買帳。

建议把這份清單固定下来:每次新增語言、調整 URL 结构、或者做站点改版时,從头過一遍。版本關系讲清楚了,蜘蛛和用戶都不用在几個相似頁面之間猜来猜去。