多語言站点常见的收錄現象是:主語言版本正常出現在索引里,其他語言版本要么迟迟不出現,要么搜尋结果里展示的是另一種語言。這類問题通常不是單一原因,而是结构、标注和互鏈三處信号互相矛盾。排查时按顺序看,比逐條改代碼更省時間。
先確認語言版本用哪種结构承载
不同结构對蜘蛛理解語言版本的影响差別很大:
- 子目錄(example.com/en/):沿用主域已有的信号积累,最容易被抓取和识別,是多數站点的預設選擇。
- 子域名(en.example.com):可以獨立配置,但需要額外確認子域名本身能被抓取,並單獨准备 sitemap。
- 國家顶級域(example.de):語言與地区信号最清晰,但每個域都要單獨积累,运维成本最高。
- 參數切換(?lang=en):最容易出現同一内容多個 URL 的情况,收錄狀態往往不稳定。
如果站点已经用了參數方式,不必急着推倒重来,先把參數版本通過 canonical 指向一個代表 URL,减少同一内容散落成多個地址。
語言标注要和頁面實际内容一致
hreflang 的作用是告诉搜尋引擎,這些頁面是同一内容的不同語言版本。它失效的场景多半不是语法寫错,而是寫得不一致:
- 只從 A 語言指向 B 語言,B 語言没有指回来,形成單向标注。
- 頁面缺少指向自身的标注。
- 标注了一個尚未翻译完成的頁面,用戶点進去看到的仍是原文。
- 用 x-default 指向了一個並不适合作為預設落点的頁面。
還有一個容易被忽略的前提:如果某個語言版本的内容本身是机器翻译且没有人工校對,把它标注成獨立語言版本,反而會让頁面的质量判断變差。這種情况下,先不标注、先不放開收錄,比硬凑一套多語言结构更稳妥。
語言切換器和内部連結
很多站点的語言切換器是一個下拉菜單,靠脚本跳轉,蜘蛛拿到的只是空連結。這會让其他語言版本失去站内入口,只能依赖 sitemap 被發現,抓取優先級明顯偏低。
更實用的做法是:
- 語言切換器使用真實的連結标簽,並给出可抓取的目标地址。
- 每個語言版本至少有一個從首頁出發、点击两三次就能到達的入口。
- 避免用基于 IP 或浏览器語言的自動重定向,把蜘蛛從 A 語言直接送到 B 語言。
- 各語言版本的 sitemap 分開提交,便于後續分開對比抓取情况。
重复内容的几個常见来源
多語言站点里的重复内容,往往不是翻译重复,而是模板重复:頁头頁脚、商品參數表、條款文本在不同語言版本里几乎一字不差。這類重复通常不會單獨導致頁面被剔除,但如果一個語言版本的正文内容极少,模板又占了大半,頁面的獨立性就很弱。
判断标准可以简單一点:把模板部分去掉之後,這個頁面還剩多少自己的内容?剩下的部分,决定了它值不值得單獨占一個索引位置。
處理顺序建议是:先保證每個語言版本都有獨立的正文内容,再考虑是否為高度相似的地区版本(例如同一語言的多個國家站)收敛索引,只保留一個主要版本。
排查时按這個顺序走
- 確認各語言版本的狀態碼、robots 規則、canonical 都指向自己,没有被誤挡或誤指。
- 检查 hreflang 是否双向一致,是否包含自引用。
- 检查語言切換器和主導航里是否存在指向其他語言版本的普通連結。
- 分別查看各語言版本的抓取记錄,判断差异来自抓取不足還是内容本身太薄。
- 調整之後至少观察几周,再做下一轮改動。
對多數中小站点来说,與其一次铺開七八種語言,不如先把一到两個語言版本的抓取和收錄做稳,再逐步增加。語言版本越多,标注、互鏈和模板重复的管理成本上升得越快。