先分清是“没收录”还是“收录了另一个版本”
多语言站点常见的两种反馈:一是某个语言版本在索引里搜不到;二是搜到了,但结果里出现的是另一个语言版本。这两件事看起来一样,处理方向却不同。核对前先用 site 查询或 URL 检查工具确认,目标语言的地址究竟没有进入索引,还是被同内容的另一语言地址顶替了展示位置。
语言版本必须是各自独立的 URL
如果把语言切换做成前端变量、cookie 或浏览器语言判断,同一个 URL 对不同访客返回不同语言的正文,抓取端通常只能看到其中一种。这样其他语言版本没有可被抓取的地址,也就谈不上收录。
- 每种语言有独立、可长期访问的目录或子域名,例如 /zh/、/en/ 或对应子域;
- 不依赖 cookie、LocalStorage 或 Accept-Language 决定正文语言;
- 切换语言时地址栏确实发生变化,能直接打开,也能被无状态请求抓取。
hreflang 的三个必查项
hreflang 不是收录开关,它解决的是“这几个地址属于同一内容的不同语言版本,请把对应语言的用户送到对应版本”。写错时未必直接导致不收录,但容易让搜索引擎选错展示的语言版本。
- 自引用:每个语言版本的页面都要在 hreflang 列表里包含自己;
- 互指:A 指向 B,B 也要指回 A,单向声明通常等于无效;
- 代码规范:使用 zh-CN、en、en-US 这类标准写法,有默认版本时用 x-default 指向它。
hreflang 和 canonical 是两件事:canonical 指向的是同一语言下的规范地址,不要用它去指向另一种语言的页面,否则等于自己否定了这个语言版本的收录价值。
内容差异太小,容易被当成重复内容
如果各语言版本只有模板文字做了翻译,正文主体仍是同一段文本,或者只是做了关键词替换,搜索引擎可能只保留其中一个版本。想让每个语言版本具备独立的收录价值,至少要保证:
- 正文是完整的本地化内容,而不是机器直译出来的片段;
- 标题、描述、面包屑与结构化数据里的语言声明保持一致;
- 本地特有的信息(价格单位、联系方式、服务范围)确实做了替换。
入口与内链:别只靠一个切换器
语言版本如果只有页面顶部一个切换按钮指向它,抓取路径会非常单薄,URL 发现的优先级也偏低。更稳妥的做法是:
- 站点地图分语言提交,或在同一份地图里标明各语言地址;
- 主导航、页脚、相关推荐里的链接指向对应语言版本,而不是统统指回主语言;
- 新文章发布时就把各语言版本的互链一起补全。
一份可执行的核对顺序
- 用 URL 检查工具确认目标语言地址的抓取与索引状态;
- 检查该地址是否返回 200,且没有 noindex、robots 屏蔽或登录墙;
- 确认语言由 URL 决定,而非 cookie 或前端变量;
- 核对 hreflang 的自引用、互指与代码规范;
- 检查 canonical 是否错误地指向了另一语言的地址;
- 对比各语言版本的正文重合度,判断是否落入重复内容;
- 补全内链与站点地图里的语言入口,再观察一段时间的抓取与索引变化。
这套顺序不保证某个语言版本一定被收录,但能把“地址不可抓”“声明写错”“内容过于重合”这三类干扰逐个排除,剩下的通常只是时间与页面本身质量的问题。