一个中国品牌花了半年时间做英文站的 SEO,关键词排名终于进了前三页。但打开 Google Search Console 一看:大量美国用户看到的却是中文页面,而台湾用户看到的是英文页面。流量来了,转化率却低得离谱。
问题不在内容质量,而在 Google 不知道该把哪个语言版本展示给哪个市场的用户。解决这个问题的技术手段,就是 hreflang 标签。
hreflang 是国际化 SEO 的核心基础设施之一,但也是技术 SEO 中出错率最高的标签。Google 官方数据显示,超过 75% 的 hreflang 实施存在错误。这篇指南从语法规范讲到部署策略,覆盖 2026 年 AI 搜索的新要求,目标是让你一次做对。
什么是 hreflang
hreflang 是一个 HTML 属性,用于告诉搜索引擎:"这个页面还有其他语言或地区版本,它们分别在这些 URL。"
它解决的核心问题是语言 / 地区定向(language/region targeting):
- 避免重复内容判定:英文版和美式英文版内容高度相似,没有 hreflang 标记,Google 可能把它们当作重复页面,只索引其中一个
- 防止语言版本互相蚕食:中文页面和英文页面争夺同一个关键词的排名,导致两个版本都排不好
- 提升用户体验信号:用户看到母语内容,跳出率降低,停留时间增加,间接提升排名
一个关键认知:hreflang 不是重定向指令。它不会强制把用户跳转到某个语言版本,而是影响 Google 在不同地区的搜索结果中优先展示哪个版本。
hreflang 语法详解
hreflang 的值由两部分组成:
- 语言代码(必填):遵循 ISO 639-1 标准,两个小写字母
- 地区代码(可选):遵循 ISO 3166-1 Alpha-2 标准,两个大写字母
格式为 language-REGION,用连字符连接。
常用语言 - 地区代码对照
| 代码 | 含义 | 典型场景 |
|---|---|---|
en |
英语(不限地区) | 全球通用英文页面 |
en-US |
美式英语 | 针对美国市场的页面 |
en-GB |
英式英语 | 针对英国市场的页面 |
zh-CN |
简体中文(中国大陆) | 中文站主要版本 |
zh-TW |
繁体中文(台湾) | 繁体中文版本 |
ja |
日语 | 日本市场 |
de-AT |
德语(奥地利) | 奥地利特定德语内容 |
pt-BR |
葡萄牙语(巴西) | 巴西市场 |
x-default 的作用
x-default 是一个特殊值,用于指定 "兜底版本"——当用户的语言 / 地区不匹配任何已声明的 hreflang 版本时,Google 应该展示哪个页面。
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
常见做法是将 x-default 指向英文版(作为全球通用语言)或语言选择页。如果你的网站只有中文和英文两个版本,将 x-default 指向英文版是最安全的选择。
常见语法错误
en-us— 地区代码必须大写,正确写法是en-USzh-Hans— Google 不支持 IETF 脚本子标签,用zh-CN代替en-EU— EU 不是有效的 ISO 3166-1 国家代码,欧盟没有统一代码- 只写地区不写语言(如
US)— 语言代码是必填项
三种实施方式
hreflang 有三种部署方式,适用于不同规模和架构的网站。选错方式不影响效果,但会影响维护成本。
方式对比
| 实施方式 | 位置 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
HTML <link> 标签 |
页面 <head> |
中小型网站(< 1,000 页) | 实施简单,无需服务端配置 | 增加 HTML 体积,页面多时难维护 |
| HTTP Header | HTTP 响应头 | 非 HTML 资源(PDF、文档) | 不依赖 HTML,适合 PDF 等文件 | 需要服务端配置能力 |
| XML Sitemap | Sitemap 文件 | 大型网站(> 1,000 页) | 集中管理,不增加页面体积 | 发现速度依赖爬虫抓取 Sitemap 频率 |
三种方式不要混用在同一组页面上。Google 声明三者效果等价,但如果同一个页面同时通过 HTML 标签和 Sitemap 声明了不同的 hreflang 映射,会导致信号冲突。
方式一:HTML <link> 标签
在每个语言版本的 <head> 中添加完整的映射集:
<!-- 英文版页面 (https://example.com/en/product) -->
<link rel="alternate" hreflang="en" href="https://example.com/en/product" />
<link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/product" />
<link rel="alternate" hreflang="ja" href="https://example.com/ja/product" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/product" />
<!-- 中文版页面 (https://example.com/zh/product) -->
<link rel="alternate" hreflang="en" href="https://example.com/en/product" />
<link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/product" />
<link rel="alternate" hreflang="ja" href="https://example.com/ja/product" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/product" />
关键规则:每个语言版本的页面必须包含指向所有版本(包括自身)的 hreflang 标签。这是 "互指" 原则,也是最常见的出错点。
方式二:HTTP Header
适合 PDF、文档等非 HTML 资源。在服务端配置响应头:
Link: <https://example.com/en/whitepaper.pdf>; rel="alternate"; hreflang="en",
<https://example.com/zh/whitepaper.pdf>; rel="alternate"; hreflang="zh-CN",
<https://example.com/en/whitepaper.pdf>; rel="alternate"; hreflang="x-default"
Nginx 配置示例:
location /en/whitepaper.pdf {
add_header Link '<https://example.com/en/whitepaper.pdf>; rel="alternate"; hreflang="en", <https://example.com/zh/whitepaper.pdf>; rel="alternate"; hreflang="zh-CN"';
}
方式三:XML Sitemap
对于大型多语言站点,XML Sitemap 是最高效的方式。需要在 robots.txt 中声明 Sitemap 位置:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/en/product</loc>
<xhtml:link rel="alternate" hreflang="en"
href="https://example.com/en/product" />
<xhtml:link rel="alternate" hreflang="zh-CN"
href="https://example.com/zh/product" />
<xhtml:link rel="alternate" hreflang="ja"
href="https://example.com/ja/product" />
<xhtml:link rel="alternate" hreflang="x-default"
href="https://example.com/en/product" />
</url>
<url>
<loc>https://example.com/zh/product</loc>
<xhtml:link rel="alternate" hreflang="en"
href="https://example.com/en/product" />
<xhtml:link rel="alternate" hreflang="zh-CN"
href="https://example.com/zh/product" />
<xhtml:link rel="alternate" hreflang="ja"
href="https://example.com/ja/product" />
<xhtml:link rel="alternate" hreflang="x-default"
href="https://example.com/en/product" />
</url>
</urlset>
注意 XML 命名空间必须声明 xmlns:xhtml,否则搜索引擎无法解析 hreflang 条目。
URL 结构策略:ccTLD vs 子域名 vs 子目录
在部署 hreflang 之前,需要先确定多语言网站的 URL 结构。这是一个影响成本、SEO 权重和运维复杂度的架构决策,通常在网站迁移或国际化项目启动时做出。
| 策略 | 示例 | 地理定向信号 | SEO 权重 | 成本 | 管理复杂度 |
|---|---|---|---|---|---|
| ccTLD | example.de / example.jp |
最强(域名本身是地区信号) | 独立积累,无法共享 | 高(多域名注册 + 独立托管) | 高 |
| 子域名 | de.example.com / jp.example.com |
中等(需 GSC 手动设置) | 部分共享主域权重 | 中 | 中 |
| 子目录 | example.com/de/ / example.com/jp/ |
弱(纯靠 hreflang + GSC) | 完全共享主域权重 | 低(单一站点) | 低 |
决策框架
对于大多数出海 B2B 品牌,子目录是性价比最高的选择:
- 预算有限 + 品牌统一 → 子目录。所有语言版本共享主域的反向链接权重和域名权威度
- 目标市场有本地化需求(如需要本地支付、合规内容)→ ccTLD。Google 对各国域名的识别是最直接的地理定向信号
- 技术团队可以独立管理多个实例 → 子域名。兼顾一定的地理信号和技术隔离
无论选哪种结构,hreflang 都是必须的。即使用了 ccTLD,Google 也需要 hreflang 来理解 example.de 和 example.com 是同一内容的不同语言版本。
常见错误与排查
hreflang 的实施错误率极高,以下是最常见的五类问题:
1. 缺少互指(return link)
最常见的错误。页面 A 声明了指向页面 B 的 hreflang,但页面 B 没有声明指回页面 A。Google 的规则是:如果互指不成立,该 hreflang 声明会被忽略。
<!-- 错误:英文页指向中文页,但中文页没有指回来 -->
<!-- https://example.com/en/about (英文页) -->
<link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/about" /> ✓
<!-- https://example.com/zh/about (中文页) -->
<!-- 缺少指回英文版的 hreflang 标签 --> ✗
2. canonical 与 hreflang 冲突
如果页面的 canonical 标签指向另一个 URL,而 hreflang 标签引用的是当前 URL,Google 会优先遵循 canonical,导致 hreflang 失效。
<!-- 冲突示例 -->
<link rel="canonical" href="https://example.com/en/product" />
<link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/product" />
<!-- 如果当前页面不是 /en/product,这个 hreflang 会被忽略 -->
原则:hreflang 中引用的每个 URL 的 canonical 必须指向自身(self-referencing canonical)。
3. 语言 / 地区代码错误
- 使用
uk表示英语 — 应该用en-GB(uk 是乌克兰语的代码) - 使用
zh而非zh-CN或zh-TW— 简体和繁体应该明确区分 - 使用不存在的组合如
en-EU— EU 不是 ISO 3166-1 国家代码
4. 使用相对 URL
hreflang 中的所有 URL 必须是完整的绝对 URL(包含协议和域名)。相对路径会被 Google 忽略。
<!-- 错误 -->
<link rel="alternate" hreflang="zh-CN" href="/zh/product" />
<!-- 正确 -->
<link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/product" />
5. GSC 中的 hreflang 错误报告
Google Search Console 的 "国际定位" 报告会显示 hreflang 相关错误。常见提示包括:
| GSC 错误信息 | 含义 | 修复方式 |
|---|---|---|
| No return tag | 目标页面缺少反向 hreflang 声明 | 在目标页面添加互指标签 |
| Unknown language code | 使用了无效的 ISO 639-1 代码 | 检查并修正语言代码 |
| hreflang value not parseable | 格式错误(缺少引号、连字符等) | 检查 HTML/XML 语法 |
| Conflicting canonical | canonical 与 hreflang 指向不一致 | 确保 canonical 自引用 |
建议每月检查一次 GSC 的国际定位报告。对于大型站点,可以使用 Screaming Frog 或 Sitebulb 进行批量 hreflang 审计。
AI 搜索与多语言内容
2026 年,Google 的 AI Overviews 已覆盖全球大多数语言市场。AI 搜索引擎在处理多语言内容时,展现出与传统搜索不同的行为模式。
AI 搜索如何处理多语言页面
- 跨语言引用:AI Overviews 可能引用英文源页面来回答中文查询,反之亦然。hreflang 帮助 AI 系统理解页面之间的对应关系,但 AI 选择引用哪个版本的逻辑尚不完全透明
- 语义理解优先:AI 搜索引擎对内容的理解不依赖 URL 结构或 HTML 标签,而是基于语义。hreflang 的价值在于帮助系统高效地找到最匹配的语言版本,而非决定排名
- 结构化数据加持:在多语言页面上部署 Schema Markup(尤其是
Article和WebPage类型),可以帮助 AI 更准确地识别内容的语言、作者和发布地区
llms.txt 的多语言策略
随着越来越多的 AI Agent 直接抓取网站内容,llms.txt 成为一个新的信号文件。对于多语言站点:
- 在
llms.txt中明确声明各语言版本的入口 URL 和语言标识 - 为每个语言版本提供独立的
llms-full.txt,包含该语言的核心内容摘要 - 这不是标准化的做法,但 2026 年已有多个 AI 搜索引擎开始解析 llms.txt 中的多语言声明
中国出海品牌的国际化 SEO 实操
对于中国出海品牌,国际化 SEO 通常从 "中文站扩展到英文站" 开始,然后逐步覆盖更多语言市场。以下是常见路径和注意事项。
第一阶段:中文 + 英文双语
最小可行方案:在现有域名下用子目录部署英文版。
example.com/ → 中文版(默认)
example.com/en/ → 英文版
<!-- 中文版 head -->
<link rel="alternate" hreflang="zh-CN" href="https://example.com/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/" />
<!-- 英文版 head -->
<link rel="alternate" hreflang="zh-CN" href="https://example.com/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/" />
注意 x-default 指向英文版——因为你的目标海外市场用户大概率不读中文。
第二阶段:扩展到多语言
当业务进入日本、德国等市场时:
- 继续使用子目录结构(
/ja/、/de/)保持权重集中 - 不要使用机器翻译直出——AI 翻译质量在 2026 年已大幅提升,但仍需人工校对行业术语和本地化表达
- 优先翻译高转化页面(产品页、定价页、案例页),而非全站翻译
- 每个语言版本需要独立的
title和meta description,不要只翻译正文而忽略元数据
第三阶段:本地化深耕
当某个市场的流量和转化达到一定规模:
- 考虑注册当地 ccTLD(如
.de、.jp),获取最强地理定向信号 - 部署本地 CDN 节点,改善 Core Web Vitals 得分
- 创建本地化原创内容(而非仅翻译),建立本地反向链接
- 在 Google Search Console 中为每个地区版本设置目标国家 / 地区
常见踩坑
- IP 重定向:基于用户 IP 自动跳转语言版本是常见做法,但会阻止 Googlebot(通常从美国 IP 抓取)访问非英文版本。正确做法是展示语言切换提示横幅,而非强制重定向
- 语言切换器不改变 URL:用 JavaScript 动态切换语言但 URL 不变,Google 无法索引不同语言版本。每个语言版本必须有独立的 URL
- 忽略繁体中文市场:台湾和香港的繁体中文用户搜索习惯与大陆简体中文不同,关键词选择和内容表达都需要调整
Hreflang 实施检查清单
部署前逐项确认:
| 检查项 | 状态 |
|---|---|
| 所有语言版本之间有完整的互指 hreflang | |
| 每个页面的 hreflang 集合包含自身 | |
| 所有 URL 使用绝对路径(含协议和域名) | |
| 语言代码符合 ISO 639-1,地区代码符合 ISO 3166-1 | |
| canonical 标签自引用,与 hreflang 不冲突 | |
| 已设置 x-default 指向兜底版本 | |
| 三种实施方式只选一种,不混用 | |
| hreflang 引用的 URL 返回 200 状态码(非 3xx/4xx) | |
| 没有基于 IP 的强制语言重定向 | |
| GSC 中无 hreflang 相关错误 |
翼果洞察:我们在服务出海客户时发现,hreflang 的技术实施本身并不复杂——真正难的是组织层面的协调。中文团队更新了产品页,但没有通知英文团队同步更新对应页面,导致 hreflang 指向的两个 "对应版本" 内容差异越来越大。Google 最终会认为它们不是同一内容的不同语言版本,hreflang 声明形同虚设。
建议建立一个简单的多语言内容同步机制:任何语言版本的页面创建或重大更新,都触发其他语言版本的翻译 / 更新任务。技术上可以用 CMS 的 webhook 实现自动通知。hreflang 的维护不是一次性的技术部署,而是一个持续的内容运营流程。