Hreflang 标记实战:写法、区域页、双向引用与常见错误
一、hreflang 解决什么:不是加分项,是防误判
先纠正一个流行误解:hreflang 不会提升排名。Google 官方多次说明,hreflang 标签不是排名因子。它解决的是另一个问题:当你的德语页和英语页讲的是同一产品,Google 可能把德语页判为英语页的重复内容。
没有 hreflang 时,Google 只能靠语言检测自己猜哪个版本给哪个国家用户。猜错的代价是德语用户搜到英语页,跳出率高,排名反而掉。hreflang 是你主动给 Google 的说明书:这几页互为翻译版本,按用户语言分发。
| 认知误区 | 实际情况 | 后果 |
|---|---|---|
| hreflang 能提升排名 | 非排名因子,只影响版本选择 | 加了也不会涨位置 |
| 写了就一定生效 | 整组规则破坏一处全失效 | 国际定位报告显示错误 |
| 只给英语页写即可 | 每个版本页都要写且双向 | 单边标签不生效 |
| 用 rel=alternate 代替 | 那是响应式/移动版用的 | 多语言必须 hreflang |
二、三种放置方式:按站点规模选
hreflang 可以放在三个地方,三种方式效果相同,但维护成本和抓取速度不同。按站点语言版本数和页面数选。
| 放置方式 | 语法形态 | 适合规模 | 抓取速度 |
|---|---|---|---|
| head link 标签 | link rel=”alternate” hreflang=”de” | 语言版本≤5,页面≤200 | 即时,随页面抓取 |
| XML sitemap | xhtml:link 子标签 | 多语言大站,推荐 | 3至7天重新抓取 |
| HTTP header | 响应头 Link 字段 | 仅 PDF 等非 HTML | 随文件抓取 |
一个场景:你的站有英、德、法、西、阿 5 个语言,每语言 50 个产品页,共 250 页。用 head link 模板批量输出,每页 head 里 5 行标签,维护成本可控。如果扩到 12 个语言、2000 页,再用 head link 就会拖慢页面,这时迁到 XML sitemap,用程序批量生成 alternative 条目。
HTML 页面不要用 HTTP header 方式,那是给 PDF 下载链接准备的。混用三种方式会导致同一组标签重复声明,Google 取其中一组,排查更困难。
用 sitemap 方式时,结构是在每个 URL 节点下挂两个 xhtml:link 子标签,一个指英语版,一个指德语版,再加一条 x-default。这种方式的好处是改语言版本时只动 sitemap 一个文件,不用逐个页面改 head;坏处是 Google 重新抓取 sitemap 有 3 至 7 天延迟,紧急修复不能用它。页面数超过 500 的多语言站,建议程序自动生成,不要手写。
三、语言国家代码、区域页与双向引用
代码规则是 hreflang 最容易写错的地方。语言码用 ISO 639-1 两位小写(de、fr、ar),国家码用 ISO 3166-1 两位大写(DE、AT、US)。只用语言码表示该语言所有地区,加国家码表示特定国家。
| 写法 | 含义 | 使用场景 |
|---|---|---|
| hreflang=”de” | 德语,不限国家 | 德国奥地利共用一页 |
| hreflang=”de-DE” | 德国本地德语 | 德国专属本地化内容 |
| hreflang=”de-AT” | 奥地利本地德语 | 奥地利价格/法规差异页 |
| hreflang=”en-GB” | 英国英语 | 英镑报价页 |
| hreflang=”x-default” | 兜底默认版 | 所有组都要带,通常指英语页 |
区域页的判断:如果德国和奥地利只是价格、法规、联系方式不同,产品内容一样,做一个德国版 + 一个奥地利差异页即可,不要为每个德语国家都翻译全文。什么时候该做独立区域页,边界见 按国家做落地页,避免做成 doorway 页被判垃圾。
双向引用的具体写法:德语页 head 里写 hreflang=”en” 指向英语页,英语页 head 里也必须写 hreflang=”de” 指向德语页,两页各自还要有自引用(写自己的语言版本),并都带 x-default。漏任何一条,整组标签 Google 都不会用。
自引用这一条常被忽略。很多人只写「我指向别的版本」,忘了「我也代表我自己」。正确的每组标签里,英语页要有一行 hreflang=”en” 指向自己的规范 URL,德语页也要有一行 hreflang=”de-DE” 指向自己。Google 用自引用确认你承认这个版本是规范版本之一,缺了它,Google 会认为这组标签不完整,直接跳过不处理。
四、常见错误清单与排查流程
hreflang 上线后 3 至 7 天必须验证。Search Console 的国际定位报告会列出具体错误,按下面这张表逐条修。
| 错误类型 | 触发原因 | 修复动作 |
|---|---|---|
| URL 返回 404 | 对端页面删除但标签未删 | 删标签或改指新版页面 |
| noindex 页面在列 | 被 noindex 的版本仍写 hreflang | 从标签组移除该页 |
| 语言代码大小写错 | 写成 de-de 而非 de-DE | 国家码改大写 |
| HTTP/HTTPS 不一致 | sitemap 写 http 页面实际 https | 统一为 https 全 URL |
| 分页过滤页混入 | 产品列表过滤参数页被当语言版 | 只给 canonical 页面写标签 |
| 缺 x-default | 忘了兜底标签 | 每组补一条指向英语页 |
排查流程三步:第一步用 Rich Results Test 或第三方 hreflang 检测工具跑一个 URL,看整组标签是否完整;第二步在 Search Console 国际定位报告看 Google 实际抓到的错误数;第三步修完后用「验证修复」按钮提交,Google 重新评估周期约 2 至 4 周。多语言内容上线的完整五道关见 多语言内容上线流程,hreflang 是其中最后一关。
一个容易被忽略的边界:hreflang 只对「互相是翻译版本」的页面有效。如果你给德语页和英语页写的其实是完全不同的两篇文章,只是语言不同,就不要硬凑一组 hreflang。Google 会判断内容是否真为互译,发现内容不一致时同样忽略整组。跨语言页面必须是同一产品、同一主题的翻译,结构和段落数大致对应。
翻译质量同样影响 hreflang 效果:机器翻译出的伪本地化页面,即使标签正确,Google 也会因为内容质量低而不展示给对应国家。所以 hreflang 上线前,内容必须过 翻译后编辑 抽检,术语和数字本地化另见 多语言站的图表处理。
FAQ 常见问题
hreflang 到底放在 head 里还是 sitemap 里?
hreflang 标签真的能提升排名吗?
为什么我的 hreflang 写了却不生效?
德国和奥地利都讲德语,需要写两个 hreflang 吗?
x-default 是什么,必须加吗?
修完 hreflang 错误后多久能看到效果?
写在最后
hreflang 是一个典型的「做对了没人夸,做错了全白搭」的技术点。它不带来排名红利,但少写一条、写错一个字符,你辛苦做的多语言内容就可能被 Google 判成重复,前功尽弃。
落地三步:本周用检测工具抽查 5 个核心产品页的 hreflang 整组完整性;下周按四条铁律补齐双向引用、自引用、x-default 和绝对 URL;第三周在 Search Console 国际定位报告确认零错误后点验证修复。架构层面如果还在子目录与独立站之间犹豫,先回到 Hreflang 多语言落地 的总体判断。
一句可以记住的话:hreflang 不是给你加排名的,是给 Google 发翻译关系图的——图要完整、双向、带兜底,缺一条整张图作废。
