你的多语言网站,是不是总被谷歌“认错人”?
刚上线西班牙语版,结果巴西用户点进来满屏英文字母;德语站做了半年,流量却全堆在英文首页上——别急着怪翻译不准,大概率是谷歌压根没看清你哪页该给谁看。
今天不聊虚的,就手把手拆解 hreflang 和地域定向怎么配才不翻车。全是实操细节,改完就能见效。
hreflang 到底是什么?为什么它比翻译插件更重要?
翻译插件只是把字换掉,hreflang 才是告诉谷歌:“这页是给谁写的”。
没有 hreflang,谷歌会把你的西语页、德语页、英文页当成一模一样的内容反复抓取——轻则分流流量,重则判定为重复内容降权。
hreflang 就像给每本书贴上明确的读者标签:en 是通用英语用户,es-ES 是西班牙本地用户,es-MX 是墨西哥用户。标签对了,谷歌才能把墨西哥用户推到 es-MX 页面,而不是让他们硬啃美式英语。
有个做露营装备的品牌,之前德语页常年被当“英文站的镜像”,加完全套 hreflang 后,德国本地搜索流量明显提升,国际英文站的压力也小了不少。
3个方法,正确部署 hreflang 标签
方法一:在 HTML 的 <head> 里写链接标签(最常用)
每个语言版本的页面,都要在 <head> 里列全所有版本(包括自己)。
比如英文首页要写:
- 指向自己:
<link rel="alternate" hreflang="en" href="https://example.com/" /> - 指向西班牙语页:
<link rel="alternate" hreflang="es" href="https://example.com/es/" /> - 指向德语页:
<link rel="alternate" hreflang="de" href="https://example.com/de/" />
反过来,西班牙语页的 <head> 里也得有这三行,缺一不可。
方法二:用 HTTP 响应头(适合 PDF、文档类资源)
如果你网站还提供多语言的产品手册 PDF,HTML 标签没法加,就得让服务器在返回文件时,通过响应头带上 Link: 字段,指明其他语言版本的地址。
这事需要后端配合,前端改不了。
方法三:用 XML 站点地图(适合大站、多语言频道多的)
建一个专门的 hreflang-sitemap.xml,把所有页面和对应的语言/地区版本按规则列进去,然后提交到 Google Search Console。
好处是集中管理,不用每页手动改;缺点是更新慢半拍,新页面上线后得等站点地图重新抓取。
不管选哪种,记住铁律:双向闭环。A 页写 B,B 页必须写 A;漏一个,整个链就断了。
地域定向如何与 hreflang 打配合?
hreflang 告诉谷歌“这是哪个语言+地区的版本”,地域定向(Geotargeting)是在 Google Search Console 里拍板:“这个子目录/子域名,就是专攻某国市场的”。
比如你用子目录结构:
example.com/es/→ 西班牙市场example.com/mx/→ 墨西哥市场
那就去 Search Console 里,分别给 /es/ 和 /mx/ 设置目标国家。这样,当墨西哥用户搜“登山包”,/mx/ 页面更容易排前面;而西班牙用户搜同样词,/es/ 才会冒出来。
只配 hreflang 不设地域定向,等于跟谷歌说“我有不同版本”,却不告诉它“哪个版本主攻哪块地”。它只能猜,猜错了,流量就跑偏。
部署过程中,你会踩中哪些“坑”?
坑一:标签不对称(最常见)
英文页写了西语链接,西语页却没回链英文页。谷歌一看:哦,这页单方面宣布有兄弟,但兄弟不认它——直接忽略整组标签。
检查方法很简单:随便打开一个语言页,右键“查看网页源代码”,搜 hreflang,确认列出的所有链接,在对应页面的源码里都能一一找到反向回链。
坑二:代码写错(ISO 标准不是摆设)
语言代码小写(zh, en, de),国家代码大写(CN, US, DE),中间用短横连接。zh-CN ≠ zh-cn,en-GB ≠ en-gb,更不能写成 english-uk 这种自创代码。
错一个字母,谷歌就当没看见。
坑三:忘了自引用(新手高频失误)
example.com/es/ 页面里,必须有一条:<link rel="alternate" hreflang="es" href="https://example.com/es/" />
不写这条,谷歌会怀疑:“这页到底算不算西语主站?”——身份模糊,权重打折。
如何验证你的配置是否真的生效了?
别靠猜。直接打开 Google Search Console → 左侧菜单点「国际定位」→「语言」或「国家/地区」报告。
这里会清清楚楚告诉你:
- 哪些页面被识别出 hreflang 标签
- 有没有“无返回链接”“无效代码”这类报错
- 是否存在孤立页面(只出不进,或只进不出)
顺手再用 hreflang.ninja 或 DeepCrawl 的免费检查器 输入首页网址,它会自动解析并标出问题点。
最后,浏览器里右键“查看网页源代码”,搜 hreflang,亲眼确认标签真在那儿,格式也没被 CMS 插件意外删掉。
注意:谷歌识别新配置需要时间,通常 1–3 周才会在报告里稳定显示,别配完两小时就刷新十次。
今天下班前,就能完成的一个启动步骤
打开你网站后台的「主题编辑」或「模板设置」,找到首页的 HTML 模板文件(通常是 header.php 或 theme.liquid 这类),或者用 WordPress 的「Site Kit」插件、Shopify 的「SEO Manager」这类你已经在用的工具。
在里面 <head> 区域,加上两组基础标签:
- 中文首页加:
<link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/" /> <link rel="alternate" hreflang="en" href="https://example.com/en/" /> - 英文首页加:
<link rel="alternate" hreflang="en" href="https://example.com/en/" /> <link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/" />
保存,刷新首页,右键看源码确认标签已生效。
然后立刻登录 Google Search Console,进「国际定位」报告,观察是否有新数据出现。
这一步做完,你就跨过了 80% 新手卡住的第一道门槛。后面加第三种语言、拆分国家版本,都是照着这个逻辑往下延展。