為什么 hreflang 值得單獨查一遍
多語言或多地区站点如果没有把 hreflang 标清楚,搜尋引擎面對同一款产品的几個語言版本,只能自己猜哪個该给哪類用戶。猜错的代價很直接:该被展示的版本進不了對應地区的搜尋结果,不该被展示的版本互相争抢,站内几個語言目錄還可能被当成重复内容處理。
hreflang 本身不提升排名,它只做一件事:告诉搜尋引擎這几组 URL 是同一内容的語言或地区變体,請按用戶的語言和地区選擇對應版本。标注错了,不如不标。
先確認站点是不是“真的多語言”
以下几種情况其實不需要 hreflang:只是把中文頁面机翻後挂在 /en/ 下、内容高度雷同;或者所有語言版本共用一套 URL,靠前端切換文案。前者容易产生薄内容,後者對搜尋引擎来说只有一個頁面。真正需要标注的是:同一主题有獨立 URL、内容各自完成本地化、面向不同語言或地区用戶。
五類高频問题
1. 只有單向标注,没有互相回指
hreflang 要求成组關系完整:A 頁标注了 B 頁,B 頁也必须标注 A 頁,並且每個頁面都要包含指向自身的标注。只做單向是新手最常见的错誤,效果基本等于没标。
2. 語言與地区代碼寫法不規范
語言用 ISO 639-1,地区用 ISO 3166-1 Alpha 2,常见寫法如 zh-Hans、zh-Hant、en-US、pt-BR。同一站点内要么统一用“語言+地区”,要么统一用纯語言,不要一半 zh-CN、一半 zh,让搜尋引擎反复判断。
3. x-default 缺失或指错
x-default 用来指定“没有匹配到語言时展示哪個版本”,通常指向語言選擇頁或不自動跳轉的預設版本。把它指向某個具体語言頁,容易让其他地区用戶被硬塞進不熟悉的語言。
4. 和 canonical 打架
如果每個語言版本都在 head 里寫 canonical 指向同一個英文頁,等于告诉搜尋引擎“這些頁面都归並到英文版”,hreflang 的区分作用就被抹掉了。正确做法是每個語言版本 canonical 到自己。
5. 靠 IP 或浏览器語言自動跳轉
用 301、302 按 IP 或 Accept-Language 跳轉,蜘蛛從不同地区抓取时會拿到不同结果,很容易造成版本混乱。更稳妥的方式是给出語言選擇入口,让用戶自己切。
一套可执行的自查流程
- 整理所有語言/地区版本的 URL 清單,做成表格,列清語言、地区、模板類型。
- 抽 10 到 20 個代表頁:首頁、主要栏目頁、詳情頁、帮助頁、活動頁,逐頁對照。
- 抓取這些頁面的 head,检查 alternate 标簽是否双向回指、代碼是否規范、URL 是否與 canonical 一致。
- 確認 hreflang 指向的 URL 返回 200、没有被 robots.txt 拦、没有多余參數造成重复地址。
- 检查同一頁面是否有多種标注方式重复出現,比如 head 里寫了、sitemap 里也寫了但内容不一致。
- 如果站点有移動版或 AMP 版本,單獨確認這些版本是否也带着完整的标注。
- 修改後隔一段時間再看日誌,观察不同地区爬虫的抓取分布和落地頁是否合理。
別忽略内容對應關系
hreflang 只是外层的声明,底层還是内容。把两個不相關的頁面互相标注,或者把机翻的薄内容标成“本地化版本”,短期看不出問题,長期會让该語言目錄整体表現變差。判断标准很简單:這個語言版本,母语用戶讀完是否觉得是自己寫的。
hreflang 不解决内容問题,它只是让搜尋引擎少猜一次。标注之前先把每個語言版本的内容對應關系理清楚,比事後反复調试标簽更省事。