多语言站点常见的收录现象是:主语言版本正常出现在索引里,其他语言版本要么迟迟不出现,要么搜索结果里展示的是另一种语言。这类问题通常不是单一原因,而是结构、标注和互链三处信号互相矛盾。排查时按顺序看,比逐条改代码更省时间。
先确认语言版本用哪种结构承载
不同结构对蜘蛛理解语言版本的影响差别很大:
- 子目录(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 是否双向一致,是否包含自引用。
- 检查语言切换器和主导航里是否存在指向其他语言版本的普通链接。
- 分别查看各语言版本的抓取记录,判断差异来自抓取不足还是内容本身太薄。
- 调整之后至少观察几周,再做下一轮改动。
对多数中小站点来说,与其一次铺开七八种语言,不如先把一到两个语言版本的抓取和收录做稳,再逐步增加。语言版本越多,标注、互链和模板重复的管理成本上升得越快。