企业官网多语言技术实现实践手记:URL结构、hreflang与语言重定向的配置细节
上个月帮一家外贸客户上线官网英文版,配置完成后用谷歌搜索控制台一查,发现英文页面和中文页面互相"抢"排名——谷歌把两个语言版本当成了重复内容。排查下来是 hreflang 标签配漏了反向引用,加上语言重定向逻辑写错。这篇把多语言官网的技术实现细节完整记录下来。
一、URL 结构选型:子目录方案
多语言官网三种 URL 结构,我们对比后选子目录:
| 方案 | 示例 | 优点 | 缺点 |
|---|---|---|---|
| 子目录 | example.com/en/ | 权重集中、维护简单 | 无 |
| 子域名 | en.example.com | 独立性强 | 权重分散、要单独配证书 |
| 参数 | example.com?lang=en | 实现简单 | SEO 最弱,不推荐 |
选定子目录后,全站统一规则:默认语言放根路径(example.com/),英文放 /en/,其他语言继续加 /de/、/ja/。规则定了后面 hreflang 才不会乱。
二、语言检测与重定向逻辑
访客第一次访问时按浏览器语言做默认跳转,逻辑如下:
if Accept-Language 包含 en 且用户未手动选择过语言:
301 重定向到 /en/
else:
保持默认语言
两个关键细节:
- 只对首次访问生效:用户手动切换语言后要写 cookie,之后不再自动跳转,否则用户选中文又被弹回英文
- 用 301 而非 302:301 是永久重定向,搜索引擎会合并权重;302 临时跳转会导致两个版本都收录
三、hreflang 标签:必须双向引用
hreflang 的作用是告诉搜索引擎"哪些页面是同一内容的语言版本"。最容易犯的错是只配了单向:
<head>
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="zh-CN" href="https://example.com/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
</head>
注意:英文页也要放同样的标签,反向指向中文页。两个语言版本必须互相引用,只配一边的话,另一边还是会被判成重复内容。x-default 指定默认语言页,覆盖未声明语言的用户。
四、多语言 sitemap:XML 里的 hreflang
站点地图也要按语言标注,提交独立的 sitemap 或在一个 sitemap 里按语言分组:
<url>
<loc>https://example.com/en/</loc>
<xhtml:link rel="alternate" hreflang="zh-CN"
href="https://example.com/" />
</url>
sitemap 里的 hreflang 和页面 head 里的要保持一致,不一致时搜索引擎以页面 head 里的为准。
五、踩坑清单(这 5 个坑都踩过)
- hreflang 只配了单向,英文页没反向引用,被谷歌判重复内容
- 语言重定向用了 302,两个版本都被收录,排名互相打架
- 用户手动切语言后被自动跳转弹回,体验差,加 cookie 标记解决
- 翻译内容直接机器翻译,英文页质量差被降权,核心页面改人工翻译
- sitemap 里 hreflang 和页面 head 不一致,谷歌提示标注冲突
这次官网是用乔拓云的网站产品搭的,多语言站点和 hreflang 的生成在后台配置,省掉了手写标签的部分,我主要处理语言重定向逻辑和 sitemap 校验这两块,上线后谷歌搜索控制台不再报重复内容。
复盘要点
- URL 结构先定子目录方案,后续所有配置围绕它展开
- hreflang 必须双向引用 + x-default,单向等于没配
- 语言重定向只对首次访问生效,用户选择优先
以上是个人实践记录,各平台具体功能以官方实时信息为准。
开放问题:你们做多语言网站时,搜索引擎还报过哪些语言相关的错误?