做多語言或多地区站点,最常见的坑往往不是翻译质量,而是结构没想清楚就開始複製頁面。等文件堆到几百上千個,再回头改目錄、改連結,成本會翻好几倍。下面這几件事,建议在動手之前先定下来。
一、先選结构,再谈實現
語言版本的承载方式主要有三種,各有取舍:
- 子目錄(如 /en/、/de/):所有語言共用一個域名,權重集中,配置简單,适合初期和小语種站点。
- 子域名(如 en.example.com):适合不同地区由不同团队维護,或在服務器、CDN 上需要分開部署的情况。
- 獨立國家域名(如 example.co.uk):地区和語言信号最明确,但成本高、维護分散,一般只在已有本地业務實体时使用。
選定之後不要混用,例如一部分語言放子目錄、一部分放子域名,會让後續的 hreflang 配置和日誌分析都變得难讀。
二、hreflang 的三條硬規則
hreflang 用来告诉搜尋引擎「這個頁面還有哪些語言或地区的版本」,寫法不难,但出错的概率很高。
- 互相指向,形成閉环。A 頁面标注了 B,B 也必须标注 A。單向标注经常被忽略,效果也會打折。
- 用規范的語言代碼。語言用 ISO 639-1(en、zh、de),地区用 ISO 3166-1 Alpha-2(US、GB、HK)。zh-Hans、pt-BR 這類寫法是可以的,不要自创。
- x-default 只寫一條。它表示「没有匹配到任何語言版本时给谁看」,通常指向預設語言頁或語言選擇頁,不要每個頁面都塞一條不同的 x-default。
另外,hreflang 中的地址必须是可訪問的绝對 URL,且指向返回 200 的規范版本。指向跳轉連結或 404 的标注,基本等于没寫。
三、自動跳轉要谨慎
不少站点一進来就根據 IP 或浏览器語言强制跳到對應版本。對訪客来说未必更方便,對搜尋引擎来说還可能让你的其他語言版本一直抓不到。更稳妥的做法是:给一個語言選擇提示,或者允许通過連結和手動切換進入任意語言版本,並保證每個版本都能被直接訪問。
如果一個語言版本只能靠自動跳轉到達,它基本上就很难被稳定地抓取和索引。
四、站点地图與内鏈上的标注
除了頁面 head 里的 hreflang,還可以在 XML 站点地图中用 xhtml:link 标注各語言版本,两處寫法保持一致,避免互相矛盾。内鏈方面,語言切換器最好用普通的 a 标簽指向具体 URL,而不是用 JavaScript 事件或表單提交。切換器本身也可以承担一点内鏈作用:比如從英文文章鏈到對應的中文文章,帮助蜘蛛在語言版本之間横向發現頁面。
五、上线前自查清單
- 每個語言版本的 URL 都能直接打開,不依赖跳轉。
- hreflang 全部双向、無死鏈、無指向重定向地址的标注。
- 語言代碼和地区代碼符合标准,x-default 唯一。
- 各語言版本的内容是真實翻译,而不是同一段文字的机械替換。
- 站点地图中包含各語言版本,並能互相标注。
- 頁面上的語言切換器是可抓取的連結。
多語言站点的复杂度往往不在翻译本身,而在层級、标注和入口的一致性。前期多花半天理清结构,後面能省掉大量逐頁修正的時間。