选多语言插件,别看它宣称支持多少语言,看三件事:每种语言版本是不是一个独立地址、有没有在 head 里输出互相指向的 hreflang、切换语言用的是链接还是自动跳转。这三项不满足,语言版本之间的关系在搜索侧就是断的,翻译得再完整也对不上号。
先定 URL 形式:一种语言一个地址
Google 关于管理多语言与多地区站点的说明建议为每个语言版本使用不同的 URL,而不是靠 cookie 或浏览器设置来切换语言;它同时提醒,如果用动态切换或按语言重定向,Google 可能无法发现并抓取全部变体,原因之一是 Googlebot 通常从美国发起、请求里不带语言偏好头。同一份文档还建议不要自动把用户从一个语言版本重定向到另一个,而是用超链接让用户自己选。
还有一条常被误解:Google 判断页面语言用的是可见内容,不是代码里的 lang 属性,也不是 URL 里的词。
hreflang 的官方规则,逐条对照
Google 关于多语言版本标注的说明里的要求可以拆成七条,验收时一条条对:
- 每个语言版本都要列出自己和其他所有语言版本,也就是互相指向。
- 两个页面没有互相指向时,这些标注会被忽略。
- 备选地址必须完全限定,包含协议,不能写成
//example.com/foo或/foo。 - 可以为没有明确匹配的语言准备一个兜底地址,使用 x-default。
- 语言与地区代码要用文档认可的形式,地区部分按 ISO 3166-1 Alpha 2 写;文档里特别说明,像 EU、UN、UK 这类保留代码在标注里不起作用。
- 不要把 hreflang 标注和其他属性(例如 media)合并进同一个 link 元素。
- 用 HTML 标签、HTTP 响应头、站点地图三种方式中的任意一种即可,三种同时用没有额外好处。
插件能力核对表
| 核对项 | 该问的问题 | 不满足的后果 |
|---|---|---|
| 独立地址 | 每种语言版本是不是各自一个 URL | 版本之间无法被关联 |
| 双向标注 | 每个版本是否列出了自己和所有其他版本 | 按官方说法,单向的标注会被忽略 |
| 兜底页 | 有没有语言选择页或 x-default | 未匹配语言的用户没有对应结果 |
| 切换方式 | 语言切换是普通链接还是自动跳转 | 自动跳转的变体可能抓不到 |
| 标注一致性 | 各语言版本输出的标注集合是否一致 | 标注之间无法互相验证 |
| 与固定链接兼容 | 换语言后地址怎么变、能不能映射回旧地址 | 已有链接指向的地址失效 |
问供应商时把这张表发过去,比问"支持多少语言"有用得多。多语言站点的外链该怎么在语言之间分配,多语言站点的外链该怎么在不同语言间分配和多语言内容之间怎么互相带来链接两篇讨论的是标注之外的那一半。

官方没写的部分,和什么时候不适用
- 官方没有给出"标注怎样算组合正确"的校验结论,没有公布属性顺序的要求,也没有公布每页语言版本数量的上限。这类问题在文档里查不到答案。
- 官方文档在调试一节列出了一些第三方校验工具,同时说明这些工具不由 Google 维护或检查。所以自查要以页面实际输出为准,不要把某个工具的报错当成官方判定。
- 只有一种语言:不需要这套标注。
- 多语言内容只给内部或员工看、不对外开放:先解决访问控制,别在标注上花时间。
- 同一种语言的不同地区版本(例如美区与英国区),要先判断它们是"同一内容的翻译"还是"内容本身就不同",再决定用 hreflang 还是当作重复内容处理。
- 多语言改版同时换了地址:顺序是先修地址,再加标注,更换域名后旧外链怎么处理里的顺序同样适用。
怎么验证标注真的生效了
- 查看页面源代码,确认 head 里确实有 link 元素,地址是完全限定的,属性没有和 media 之类合并。
- 做一张双向互指对照表:左列每个语言版本,右列它列出的全部版本,然后逐格反查——B 列了 A,A 是否也列了 B。这是官方说法里唯一可自行核对的判定方式。
- 在外部网络环境点一次语言切换,确认那是一个普通链接,而不是靠脚本跳转过去的。
- 新加的语言版本上线后,把整张对照表重跑一遍。新增版本最容易漏的就是回到其他版本里补上自己。
多语言这件事上,官方给的是规则清单,不是效果承诺。把规则逐条对齐,剩下的问题才值得去问第三方工具或供应商。