要点
一、网址结构有三种常用选择,官方不推荐用网址参数区分地区。
| 结构 | 示例 | 官方列出的优点 | 官方列出的缺点 |
|---|---|---|---|
| 国家代码顶级域名 | example.de | 地区定位清楚,服务器位置无关 | 成本高,基础设施要求多,部分 ccTLD 有注册限制 |
| gTLD 加子域名 | de.example.com | 容易设置,服务器可放在不同地点 | 用户可能分不清 de 指语言还是国家 |
| gTLD 加子目录 | example.com/de/ | 容易设置,维护成本低 | 只能用同一服务器位置,站点之间分隔程度低 |
| 网址参数 | site.com?loc=de | 无 | 不推荐,难以按网址分段,地区信号不清楚 |
二、不同语言或地区的内容放在不同网址上,再用 hreflang 标注对应关系。官方建议不依赖 Cookie 或浏览器设置在同一网址上切换语言,因为 Googlebot 可能找不到、抓不到这些变体。
三、hreflang 有三种实现方式,Google 视为等效,选一种维护即可。
- HTML 标签,放在格式正确的
<head>内:<link rel="alternate" hreflang="de" href="https://example.com/de/page" /> - HTTP 响应头,适合 PDF 这类非 HTML 文件:
Link: <https://example.com/de/file.pdf>; rel="alternate"; hreflang="de" - XML 站点地图,在
<url>下用<xhtml:link rel="alternate" hreflang="..." href="..." />,并声明xmlns:xhtml="http://www.w3.org/1999/xhtml";每个<url>元素要列出该页面的全部版本,包括它自己。
三种方式可以同时使用,但官方说明这样做对搜索没有额外好处,只会增加维护难度。
四、写法规则如下。
- 每个语言版本要列出自己和其他全部语言版本,同一组标签在每个版本上相同。
- 标注要双向,A 指向 B 而 B 没有指回 A 时,这组标签会被忽略。
- 替代网址写完整地址,包含 https,写
https://example.com/foo,不写//example.com/foo或/foo。 - 语言代码用 ISO 639-1(如
en、de),地区代码可选,用 ISO 3166-1 Alpha 2(如en-GB、de-BE),也可加文字代码(如zh-Hans-US)。只写地区不写语言无效。
五、x-default 用于浏览器语言和地区都匹配不上时显示的备用页面。它也可以用在其他页面上,但设计初衷是语言选择页,用在语言选择页上效果最好。
六、hreflang 和 canonical 要指向同一语言。官方说明使用 hreflang 时,canonical 指定同语言的页面;同语言没有合适页面时,指定最接近的替代语言页面。Google 在选择规范网址时,会优先选择处在 hreflang 互指组里的网址。例如 de-de 和 de-ch 互相标注而没有标注 de-at,规范网址会倾向 de-de 和 de-ch 的页面,而不是 de-at。
七、同语言、不同地区的页面(如美国、加拿大、英国的英文页)内容相近时,Google 可能把它们当作重复页面。官方判断标准是主要内容是否同一种语言:只翻译了页头、页脚等非主要文字而正文不变,就算重复。对这种情况,官方建议同时使用 canonical 和 hreflang,帮助 Google 判断在搜索结果里显示哪个地区的网址。另外,为同一语言的多个地区页面提供一个不指定地区的通用版本(如 en-IE、en-CA、en-AU 之外再提供 en),供其他地区的该语言用户使用。
八、按 IP 或浏览器语言自动跳转有抓取风险。官方建议不要用 IP 分析来调整内容,理由是 IP 定位难以做准;也不要把用户从一个语言版本自动重定向到另一个语言版本,改用链接让用户自己选择。Googlebot 默认 IP 显示在美国,且请求里不设置 Accept-Language 头,按 IP 或语言返回不同内容的页面,Google 可能抓取、索引、排名不到其他地区的版本。Googlebot 也会用美国以外的 IP 抓取,对这些请求的处理方式应与同地区普通用户一致。
容易误解的地方
- hreflang 不是 Google 判断页面语言的依据。Google 根据页面上可见的内容判断语言,不使用
lang属性或网址里的语言信息。 - 地区代码要符合 ISO 3166-1 Alpha 2。EU、UN 这类代码会被忽略;英国写
GB,写UK会被忽略。 - 翻译过正文的页面不算重复页面,不需要用 canonical 把它们指向某一个语言版本。
- 不加 hreflang 时 Google 也可能发现其他语言版本,但官方建议明确标注。
- 只给部分地区版本放开抓取不是官方建议的做法。官方建议各地区版本使用相同的 robots.txt 和 robots meta 规则。
怎么检查
- 抽查一组语言版本,对照每个版本的 hreflang 列表是否相同、是否包含自身、对方是否回指。
- 检查 hreflang 网址是否为带 https 的完整地址,语言和地区代码是否有效,地区代码有没有单独出现。
- 检查每个版本的 canonical 是否指向同语言页面,是否和 hreflang 指向的网址矛盾。
- 用美国 IP、不带
Accept-Language的请求访问各地区网址,确认返回的是该网址对应的内容,没有被跳转到其他地区版本。 - 站点地图实现时,确认每个
<url>都列出了全部版本,并声明了 xhtml 命名空间。
来源
- Managing multi-regional and multilingual sites,https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites(2026-10-05 核对)
- Tell Google about localized versions of your page,https://developers.google.com/search/docs/specialty/international/localized-versions(2026-10-05 核对)
- How Google crawls locale-adaptive pages,https://developers.google.com/search/docs/specialty/international/locale-adaptive-pages(2026-10-05 核对)
- How to specify a canonical URL with rel=“canonical” and other methods,https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls(2026-10-05 核对)
- What is URL canonicalization,https://developers.google.com/search/docs/crawling-indexing/canonicalization(2026-10-05 核对)
