做多語言或多地区站点的人常遇到一種情况:英文版收錄正常,其他語言版本在索引里几乎查不到;或者反過来,某個小语種版本被收錄,主語言版本反而消失。這類問题通常不是 hreflang 寫错了,而是語言版本從被發現那一步起就没走通。
先分清 hreflang 解决的是什么
hreflang 的作用是告诉搜尋引擎“同一份内容存在哪几個語言或地区版本,分別给哪類用戶看”。它不负责让頁面被發現,也不负责让頁面被收錄。一個從没被抓取過的語言版本,寫再多 hreflang 也不會自動出現在索引里。
所以遇到“只有一種語言被收錄”,第一件事不是检查 hreflang 语法,而是回到更前面的环节:這個語言的 URL 有没有入口,有没有被抓取,抓到的内容和主版本是不是构成了重复。
索引是按 URL 逐條建立的
索引以 URL 為單位,每個 URL 有自己的标题、摘要和語言判断,搜尋引擎不會因為几個語言版本互相指了 hreflang,就把它們合並成一條记錄。相反,如果多個語言版本正文高度一致,只是換了導航和货幣符号,很可能被当作重复内容處理,最终索引里只留下其中一條。這是“只有一種語言被收錄”最常见的成因之一。
常见原因
- 入口只放在主語言版:語言切換靠 JS 下拉或需要点击才渲染,蜘蛛看不到,其他語言版就成了孤岛。
- sitemap 只提交了主語言:其他語言的 URL 没有出現在任何提交清單里,發現路径少了一條。
- canonical 全部指向主語言版:等于主動告诉搜尋引擎不要收那些版本,被合並或忽略都很正常。
- 内容差异太小:机翻、只換少量词匯的版本,在價值判断上容易被归為重复。
- URL 结构不统一:一會儿 /en/,一會儿 ?lang=en,归一化时容易互相冲突。
- 測試阶段的規則没清理:robots 或 noindex 残留,某個語言目錄整体被挡在外面。
核對顺序
- 確認每種語言的 URL 是否都提交過,數量和實际頁面數是否對得上。
- 检查語言切換是否為可抓取的 a 标簽,而不是按钮、事件或图片。
- 抽查几個語言版本的源碼,確認 canonical 指向自己,而不是主語言版。
- 對照 hreflang 的互相指向,確認每個版本都能指回其他版本,且没有指向不存在的 URL。
- 模拟蜘蛛訪問,看狀態碼、正文語言和主要内容是否正常返回。
- 對比不同語言版本的正文,判断差异是否足够,而不是靠机器翻译凑數。
hreflang 是给“已经能被看到”的頁面做分组,不是让頁面被收錄的開關。發現和抓取没解决,分组就無從谈起。
什么情况下该合並,什么情况下该保留
如果某個語言版本本身内容很薄、没有本地化價值,與其硬留在索引里,不如合並到主版本,或者用 canonical 明确指向更完整的那一版。让索引里留下有獨立價值的頁面,比追求每個語言版本都收錄更實际。
多地区站点(同一語言的不同國家版本)情况類似:價格、库存、配送范围确實不同,就要把這些差异寫進正文,而不只是換個货幣符号。内容层面没有区別,索引层面通常也不會给两個位置。
排查的固定顺序
多語言收錄問题的排查路径基本固定:先看發現入口,再看抓取结果,然後看重复與归一,最後才回到 hreflang。按這個顺序走一遍,大多數“只有一種語言被收錄”的情况都能定位到具体环节,而不是在标簽上反复纠结。