站点运营

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

多語言、多地区站点常出現同一内容被拆成多個互相竞争版本的状况。本文從 hreflang 的双向声明、語言與地区代碼的区分、x-default 兜底、與 canonical 的關系、自動跳轉與机器翻译頁控制等方面,给出一份可执行的自查清單,帮助运营者把版本關系表维護清楚。

站点运营

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

多語言、多地区站点最容易出現的一種情况是:同一個頁面有中文、英文、日文几個版本,内容其實各不相同,但在蜘蛛眼里却像几份互相竞争、甚至互相重复的頁面。問题通常不在翻译质量,而在版本之間的關系没有说清楚。

先確認版本之間有没有互相声明

hreflang 的作用是告诉搜尋引擎:這几個 URL 是同一内容的不同語言或地区版本,請按用戶的語言环境展示對應版本。它不是“多語言站点的加分項”,而是一張關系表。關系表最容易出問题的地方是單向声明。

  • 英文頁指向中文頁,中文頁却没有指回英文頁;
  • 只有首頁做了声明,栏目頁和詳情頁全都没有;
  • 新增語言版本後,忘了回头补舊版本的声明。

建议的做法是:把語言版本当成一组 URL 来维護,任何一组里只要有一個 URL 變了,整组都要同步更新。用模板统一輸出比手工寫标簽更可靠。

語言代碼和地区代碼別混着寫

語言與地区是两层

en 表示英语,en-US、en-GB 表示不同地区。如果只是語言不同,用 en、zh、ja 就够了;如果同一語言面向不同市场(價格、货幣、法規不同),才需要加地区代碼。混着寫會導致同一個頁面被声明两次,關系表自己打架。

x-default 要有一個明确的落点

x-default 用来兜底:当用戶的語言环境不在你声明的那几種里时,預設展示哪個版本。它應该指向一個内容完整、不强制跳轉的頁面,通常選英语版或主語言版。不要把它指向一個“語言選擇頁”,那會让用戶和蜘蛛都停在中間頁。

與 canonical 的關系要理顺

常见誤解是:多語言版本應该全部 canonical 到主語言版本,否則會被判重复。這種做法會让其他語言版本很难被單獨索引。更合理的思路是——各語言版本各自 canonical 到自己,同时用 hreflang 把它們串起来。只有当同一語言下的几個 URL 内容几乎一致(例如带參數的變体)时,才该合並 canonical。

一句话记法:hreflang 管“谁和谁是兄弟”,canonical 管“這一组里哪個是代表”。两者不冲突,但指向必须各自明确。

自動跳轉與机器翻译頁

根據浏览器語言自動跳轉看起来贴心,實际常常挡住蜘蛛——不少爬虫带着單一的語言头訪問,被跳到另一個版本後,原来的 URL 就再也抓不到了。更稳妥的做法是:URL 保持可訪問,用頁面内的語言切換入口引導用戶,必要时给一個不依赖脚本的提示條。

机器翻译生成的大量頁面則要控制規模。翻译质量低、内容重复度高的頁面,建议先不提交、不加索引,等人工校對後再開放。宁可少几十個語言版本,也不要把整站拖進低质量内容的泥潭。

一份可执行的自查清單

  1. 列出站内所有語言與地区版本,確認每一组 URL 的對應關系完整。
  2. 随机抽五组頁面,检查声明是否双向、語言與地区代碼是否互相匹配。
  3. 確認每组都有且只有一個 x-default。
  4. 检查各語言版本的 canonical 是否指向自己,而不是统一指向主語言。
  5. 關掉自動跳轉,用真實請求分別訪問几個語言版本,看返回内容是否一致。
  6. 在搜尋後台對比各語言版本的收錄情况,長期零收錄的版本重点排查。
  7. 新增語言时,把“补 hreflang、补 sitemap、补内鏈入口”寫進上线流程。

入口和抓取路径同样重要

声明寫得再規范,如果其他語言版本没有任何内鏈入口,蜘蛛也很难發現它們。建议在頁脚或顶部語言切換区给每個版本一個真實的 a 連結,而不是纯 JS 按钮;同时在 sitemap 里分別标注各語言版本,方便蜘蛛按组抓取。

做完這些不必期待立刻见效。多語言站点的收錄和展示調整通常比較慢,重点是把關系表维護清楚,让它随着内容更新一直保持准确,而不是上线时检查一次就放着不管。