做多语言或多地区站点时,最容易出问题的地方不是翻译质量,而是页面之间的对应关系。同一个产品有中文版、英文版、日文版,如果 hreflang 写错、互指不完整,或者用自动跳转把用户和蜘蛛带去另一个版本,搜索引擎就可能只挑一个版本展示,甚至把几个版本当成重复内容。
先分清“语言”和“地区”
语言代码用 ISO 639-1(如 zh、en、ja),地区代码用 ISO 3166-1 Alpha 2(如 CN、US、JP)。业务只按语言区分时,写 zh 就够;如果同一语言在不同地区内容不同(如 en-US 与 en-GB 的价格、币种、库存不同),就必须带上地区。规则一旦定下,全站统一,不要一半写 zh-CN,一半写 zh-Hans。
hreflang 的三条硬规则
- 互相指回:A 页面写了指向 B 的 hreflang,B 页面也必须写回 A,缺一边等于没写。
- 自我引用:每个版本都要包含指向自己的 hreflang,中文页也要写 zh-CN 指向自己。
- 补一个 x-default:指定没有匹配语言时展示哪个版本,通常是语言选择页或默认语言首页。
常见的写法错误
- hreflang 指向的 URL 是 404,或者会跳转到别的地址;应写最终 URL,不要写会 301 的地址。
- 只写相对路径 /en/ 却没有域名,模板调整后就失效。
- sitemap 里写了一份 hreflang,HTML 标签里又写了一份,两边内容不一致。
- 语言选择页没有 hreflang,用户点进去后落到错误版本。
- 用 zh-CN 和 zh-Hans 混写指同一页面,互相冲突。
自动跳转要谨慎
按浏览器语言或 IP 自动跳转,对访客体验不一定更好,对抓取更麻烦:蜘蛛通常从某个地区发起请求,可能永远只看得到默认版本,其他版本卡在“已发现未抓取”。如果确实需要跳转,建议:
- 跳转只在用户点击明确选择后触发,并记住这次选择。
- 服务端跳转用 302 而不是 301,避免把另一个版本当成永久规范。
- 确保每个语言版本都有独立、可直达的静态 URL,不依赖跳转才能访问。
自查流程
- 导出所有语言版本的 URL 列表,按“页面主题 + 语言地区”分组,确认每组页数一致,没有漏掉某个语种。
- 抽查核心页面源码,确认 hreflang 完整、互指、含自引用和 x-default。
- 用抓取工具批量跑一遍,检查 hreflang 指向的地址返回 200,且与最终 URL 一致。
- 核对 sitemap 与页面内的 hreflang 是否一致,重复的删掉一种写法。
- 在搜索控制台按地区、语言查看展示与抓取情况,某个版本长期没有抓取记录,就回头看跳转和入口。
内容层面别偷懒
如果几个语言版本直接用机器翻译,正文高度相似,容易互相竞争。至少保证标题、描述、正文要点针对当地重写,价格、单位、联系方式做本地化。有些语种内容暂时做不出来,宁可不放该版本,也不要用空壳页面占位——空页面既没有实际价值,也会分散抓取。
多语言站点的核心不是多写几份 hreflang,而是每个版本都有独立可访问的地址、清晰的语言归属,以及能互相指认的对应关系。
把语言地区清单、hreflang 写法规则、默认版本策略记进文档,新增语种时照着模板走,比每次临时想办法省事得多。