Linus
Linus

原文发布于

2026年03月05日

/

最新更新于

2026年03月05日

/

阅读

1
0

Hreflang 标签与国际化 SEO 完全指南:多语言网站的正确打开方式

一个中国品牌花了半年时间做英文站的 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 的值由两部分组成:

  1. 语言代码(必填):遵循 ISO 639-1 标准,两个小写字母
  2. 地区代码(可选):遵循 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-US
  • zh-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.deexample.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-CNzh-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(尤其是 ArticleWebPage 类型),可以帮助 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 年已大幅提升,但仍需人工校对行业术语和本地化表达
  • 优先翻译高转化页面(产品页、定价页、案例页),而非全站翻译
  • 每个语言版本需要独立的 titlemeta 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 的维护不是一次性的技术部署,而是一个持续的内容运营流程。

在AI里面继续讨论: