hreflang 标签怎么写:多语言 SEO 的语言地区声明实操
多语言多地区网站如何用 hreflang 告诉 Google 哪个网址对应哪种语言,避免被当成重复内容。讲清 zh-CN 与 en-US 代码格式、x-default 兜底、双向引用规则,附可直接粘贴的标签例子。
hreflang 标签怎么写:多语言 SEO 的语言地区声明实操
如果你的网站有中文、英文、甚至按地区分的多个版本,Google 并不会自动知道这几个网址其实是同一个页面的不同语言。它可能只收录一个版本,在搜索结果里给用户错的语言,更糟的是把你辛苦翻译的几页内容判成重复内容。hreflang 标签就是用来解决这件事的:它明确告诉 Google,这个网址是中文版,那个是美国英语版,请按用户所在地区和语言把对的页面送出去。
这篇我把 hreflang 的格式、放置位置、最容易翻车的地方讲清楚,并给一组可以直接抄的标签例子。
hreflang 到底声明了什么
一条 hreflang 声明的核心是两件事:语言代码,加上对应的网址。比如告诉 Google "这个网址 https://example.com/zh 是简体中文版"。
它能放在三个地方,选一个就好:
- 页面 head 里的
<link rel="alternate" hreflang="...">标签,最常见,也最好检查; - HTTP 响应里的
Link:头,这是 PDF 这类非 HTML 文件唯一能用的方式,因为你没法往 PDF 里塞 link 标签; - XML sitemap 里的
<xhtml:link>块,上千页的大站用这种最省心,映射集中在一个文件里维护。
三种不要混用。同一个页面在 head 和 sitemap 里都放 hreflang,而且值还对不上,Google 收到的就是互相打架的信号。
语言地区代码的正确格式
代码格式是国际化 SEO 里最容易写错的一环。它由一个 ISO 639-1 语言代码组成,后面可以选择性地接一个短横线加 ISO 3166-1 的两位地区码。
zh面向所有中文用户;zh-CN面向中国大陆的简体中文;en面向所有英语用户;en-US面向美国英语,en-GB面向英国英语。
有两个坑要记住。第一,单独写地区码永远不合法,US 这样光秃秃地写会被直接拒掉,因为 hreflang 的值必须以语言开头。第二,英国的地区码是 GB 不是 UK,UK 既不是合法语言也不是合法地区。繁体中文这类还能加脚本子标签,写成 zh-Hant。
双向引用:整组要么都活,要么都死
这是 hreflang 最反直觉的一条规则,也是最多人栽跟头的地方:每个页面都必须列出整组的全部版本,包括指回自己的那一条。
举个具体的:假设你有中文页和英文页两个版本互相声明 hreflang。中文页不能只指向英文页,它还得在自己的标签里列出中文页自己。如果英文页指向了中文页,而中文页没有指回英文页,Google 会把这段标注当成"未确认"直接忽略。落到实处就是,同一段 link 标签会出现在组里每一个网址上,每个页面都列出包含自身在内的所有备选。Search Console 里那个让人头疼的"无返回标签"报错,几乎全是这条没做到导致的。
一组可以直接抄的标签
假设中文版在 https://example.com/zh,美国英语版在 https://example.com/en。两个页面的 head 里都要放下面这一整段,一字不差:
<link rel="alternate" hreflang="zh-CN" href="https://example.com/zh" />
<link rel="alternate" hreflang="en-US" href="https://example.com/en" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en" />
注意三点。一是中文页和英文页放的是同一段,这正是双向引用的体现。二是网址用带协议和主机名的绝对地址,别用相对路径。三是网址里如果有 &,要转义成 &,否则查询字符串会撑坏标签。
那条 x-default 是兜底:当访客的语言既不是中文也不是美国英语,比如浏览器设成了德语,Google 就把他送到 x-default 指的页面,这里指向了英文版,你也可以指向一个语言选择页。它是可选的,但强烈建议加上。
我自己踩过的一个坑
我之前给一个英文老站补中文版,标签都写好了,Search Console 却一直报"无返回标签"。查了半天发现是英文页的模板里有个语言代码被同事手抖写成了 en_US,用了下划线而不是短横线。就这么一个字符,整组 hreflang 全被 Google 判为无效,中文页的收录也跟着卡住。从那以后我养成习惯:上线前先把每个代码丢进 hreflang 标签生成器 跑一遍校验,它会把不符合格式的代码、漏掉的自引用、重复项都标出来,顺手生成 head 标签、HTTP Link 头和 sitemap 三种形式,省得逐页手抄出错。
大规模站点怎么维护
页面少的时候手写 head 标签没问题。但如果是五种语言、上千页的目录站,逐页标注会很痛苦。这时候用 sitemap 形式:生成 <xhtml:link> 块,接进你的 sitemap 生成器,让每个 <url> 都带上完整的备选集合,别忘了在根节点声明 xhtml 命名空间。这样整张语言地图就集中在一个文件里。
sitemap 里的 hreflang 写完后,记得检查每个声明的网址都真实可访问、没有指向 404 或重定向链。这一步可以用 sitemap 网址审计 批量过一遍,把死链和异常状态码挑出来,避免 Google 顺着 sitemap 爬到一堆无效地址。
小结
hreflang 不复杂,但容错率很低:代码格式写错一个字符、漏一条自引用,整组就失效。记住三件事就够用了,代码以语言开头并用短横线连地区,每个页面列全部版本含自己,加一条 x-default 兜底。把这些做对,Google 才会把对的语言送给对的用户,你的翻译内容也才能各自积累相关度,而不是互相当成重复内容内耗。
Made by Toolora · Updated 2026-06-13