文章目录
Toggle多语言SEO做不好,90%的问题出在hreflang
做过外贸站的人都知道,多语言不是把英文页面翻译成德语、西语就完事了。真正要命的是搜索引擎搞不清楚你到底哪个语言版本该给哪个用户看——结果就是几个语言版本互相打架,权重分散,谷歌干脆一个都不给你排。hreflang标签就是来解决这个问题的。但说实话,我见过太多外贸站要么压根没加,要么加错了,比不加还糟糕。
hreflang到底在解决什么问题
假设你有个英文站 example.com,还有个德语版 example.com/de/,另外给英国用户单独做了 example.com/en-gb/。这三个页面的内容本质上是同一套东西的不同语言/地区版本。如果不用 hreflang 告诉谷歌它们之间的关系,谷歌会怎么处理?它可能判定你在堆重复内容,也可能选一个它认为”最好”的版本展示给所有用户——但那个版本未必是你想让每个市场看到的。
hreflang 就是一组写在页面 <head> 里的标签,用来说:”这个页面的德语版本在那边,英语版本在这边,给英国用户的版本在另一个地址。” 它是给搜索引擎看的信号,不影响用户看到的内容。
三种最常见的hreflang写法(以及哪种适合你)
| 写法 | 代码示例 | 适用场景 |
|---|---|---|
| HTML head 标签 | <link rel=”alternate” hreflang=”de” href=”…” /> | 页面数量不多、手动可控的站 |
| HTTP 响应头 | Link: <…>; rel=”alternate”; hreflang=”de” | 非HTML文件(如PDF) |
| XML Sitemap | 在 sitemap 里加 xhtml:link 节点 | 页面多、语言版本复杂的大站 |
WordPress 外贸站最常用的是第一种,配合插件自动输出。但如果语言版本超过三四个,或者用 WooCommerce 做了多语言商城,我建议直接走 sitemap 方案,维护起来清爽得多。
语言代码写错,等于白做
这是我在客户站上见得最多的问题。语言代码不是随便写的,ISO 639-1 是语言,ISO 3166-1 Alpha-2 是国家/地区。格式是 语言-地区,比如:
- en — 英语(不指定地区,通用)
- en-US — 美式英语
- en-GB — 英式英语
- pt-BR — 巴西葡萄牙语
- zh-Hans — 简体中文(注意不是 zh-CN,虽然 zh-CN 也能用,但 zh-Hans 更准确)
有个做机械配件的客户,德语版写的是 hreflang="ger"——这是 ISO 639-2 的三字母代码,谷歌不认。改成 de 之后,德国市场的自然流量大概两三周就开始有起色。这种低级错误其实特别常见。
x-default 和自引用:两个最容易漏掉的细节
别忘了 x-default
x-default 是告诉谷歌:”如果用户的语言/地区跟所有版本都不匹配,给他看这个页面。” 通常是你的英文主站或者一个语言选择页。没有 x-default 的话,谷歌可能会随机挑一个版本给那些”没被覆盖到”的用户——你猜它挑中的是不是你想给的?
每个页面都要包含自己
比如德语页面的 hreflang 列表里,必须有一条是指向它自己的:hreflang="de" href="https://example.com/de/"。很多人只写了”别的版本”,忘了写自己。谷歌的文档明确说了,hreflang 必须是双向确认的——A 页面指向 B,B 页面也必须指向 A,否则整个集群可能被忽略。
我们之前写过一篇《外贸独立站需要做多语言吗?怎么做?》,里面聊了多语言站的整体架构思路,hreflang 只是其中一环,但如果你连站点结构都没想清楚,hreflang 写了也是乱的。
WordPress 站怎么落地:插件方案 vs 手动方案
如果你用 WPML 或 Polylang,它们会自动输出 hreflang,省事。但自动输出的东西不一定对——我见过 WPML 在某些主题下把 hreflang 输出到了 <body> 里,谷歌直接忽略。装完插件后一定要用浏览器开发者工具查看页面源代码,确认 hreflang 标签在 <head> 区域。
手动方案适合语言版本少、想完全控制的站。在 functions.php 里根据当前页面语言动态输出对应的 hreflang 标签,或者用 ACF 给每个页面加自定义字段。说实话,如果你只有中英两三个版本,手动写反而比插件稳定。
还有一点:hreflang 里的 URL 必须是绝对地址,用 https,带 www 或不带 www 要跟你的 canonical 保持一致。别一个页面 canonical 写的是不带 www 的,hreflang 又写了带 www 的,谷歌会懵。
跟 canonical 和 GEO 的关系,别搞混了
有人问:hreflang 和 canonical 冲突吗?不冲突,但逻辑要清楚。canonical 是说”这个页面的权威版本是哪个”,hreflang 是说”这个页面的其他语言版本在哪儿”。一个德语页面,它的 canonical 应该指向它自己(德语版),而不是指向英文版。如果你把德语页面的 canonical 指向英文页,等于告诉谷歌”别索引德语版了”,那 hreflang 就白写了。
至于 GEO(生成式引擎优化),hreflang 的作用更微妙。AI 搜索引擎抓取多语言内容时,如果 hreflang 清晰,它更容易判断该给用户推荐哪个语言版本。我们之前拆过《GEO生成式引擎优化具体怎么做?一份可执行的操作清单》,里面提到结构化信号对 AI 搜索的影响,hreflang 算是其中比较底层但容易被忽略的一项。
上线前用这三个工具查一遍
- Google Search Console 的国际定位报告 — 能看到谷歌识别到的语言/地区版本,如果某个版本没出现,说明 hreflang 有问题
- Ahrefs 或 Screaming Frog 的 hreflang 审计 — 能查出缺少自引用、指向错误、代码格式不对等问题
- 手动抽查源码 — 挑三四个页面,看 <head> 里的 hreflang 是不是完整、双向、格式正确
别嫌麻烦。多语言站的 hreflang 一旦出错,排查起来非常痛苦,因为症状往往是”流量就是不涨”,而不是报错。上线前花半小时检查,后面省几十个小时。
常见问题
hreflang 加错了会有什么后果?
最直接的后果是谷歌忽略你的 hreflang 集群,几个语言版本被当成重复内容处理,权重分散,可能只有一个版本能被搜到。更糟的情况是谷歌把错误的语言版本展示给用户——比如给德国用户看英文页,跳出率飙升。如果标签指向了404页面或者格式严重错误,Search Console 会报错,但很多小错误它不会提示,只能靠工具审计。
只有中英两个版本,还需要 hreflang 吗?
需要。两个版本同样存在”谷歌该给谁看哪个版本”的问题。如果你不做 hreflang,谷歌可能把中文页排给英文用户,或者把英文页排给中文用户。加了之后,至少 x-default 和双向引用能帮谷歌理清关系。中英双语是最简单的场景,花十分钟就能写对,没理由跳过。
hreflang 和自动翻译插件能一起用吗?
可以,但要小心。很多自动翻译插件(比如 GTranslate)生成的页面是 JS 动态切换的,URL 不变,这种没法做 hreflang,因为谷歌抓不到独立 URL。如果你要做多语言 SEO,建议用生成独立 URL 的方案(子目录或子域名),而不是 JS 切换。独立 URL 才能让 hreflang 生效,也才能让每个语言版本被单独索引。
改了 hreflang 之后多久能看到效果?
没有固定时间。谷歌重新抓取和重新评估需要几周到几个月不等,取决于你网站的抓取频率和改动范围。如果只是修正了几个标签,可能两三周就有变化;如果是整个多语言架构调整,等一两个月很正常。别改完第二天就盯着 Search Console 看,没意义。
WooCommerce 产品页的 hreflang 有什么特殊要注意的?
产品页最容易出的问题是:某个语言版本的产品页被删了或者缺货隐藏了,但 hreflang 还指着它。这会导致谷歌抓取到404,整个集群的可信度下降。另外 WooCommerce 的多语言插件在处理产品分类、标签页时,hreflang 经常输出不全。建议单独审计产品页和分类页的 hreflang,别只检查首页和博客。
我们团队从2010年开始做WordPress外贸建站,多语言站的 hreflang 问题几乎每个客户都会碰到,区别只是错多错少。如果你正在折腾多语言站,先把 hreflang 这块理清楚,比急着翻译内容重要得多。
需要外贸独立站建站或 GEO 优化服务?美络云科技(Mloun)提供 WordPress 外贸独立站建站、WooCommerce 跨境商城、海外 SEO 与 GEO 生成式引擎优化一站式服务,服务覆盖全球 25% 的国家和地区。