hreflang标签必须成组互指且全覆盖:每页需声明所有语言版本(含自身及x-default),值须严格符合bcp 47规范(如zh-cn非zh_cn),href为绝对url且协议一致,lang属性与hreflang大小写完全匹配,否则整组静默失效。

hreflang 不是“多国切换开关”,它只告诉搜索引擎:这个页面的其他语言/地区版本在哪。配置错,整组失效;漏一条,全盘降权。
hreflang 值必须严格匹配 BCP 47 规范
写错大小写、连字符、拼写,Google 就当没这行 <link>。常见错误包括:
-
zh_CN(下划线 ❌)→ 正确是zh-CN -
EN-us(语言大写 ❌)→ 正确是en-US -
chinese(非标准码 ❌)→ 用zh、zh-Hans或zh-Hant -
zh-TW合法,但 Google 更倾向zh-Hant-TW(三段式更明确)
注意:html 根标签的 lang 属性也得和 hreflang 一致,比如 对应 hreflang="zh-CN";不一致会静默忽略整组。
每页都要完整声明所有语言版本(含自己)
不是“只写别的语言”,而是每个语言页的 都要包含全部 <link rel="alternate" hreflang="...">,包括指向自身的那条。
例如有 en-US、zh-CN、ja-JP 三个版本,https://example.com/zh/ 页面里必须有:
<link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/"><link rel="alternate" hreflang="en-US" href="https://example.com/en/"><link rel="alternate" hreflang="ja-JP" href="https://example.com/ja/"><link rel="alternate" hreflang="x-default" href="https://example.com/en/">
漏掉任意一条(比如中文页没写 hreflang="en-US"),搜索引擎可能判定关系不闭环,整组降权。
href 必须是绝对 URL,且协议/域名/路径全一致
相对路径如 /zh/ 或带参数的 https://example.com/zh/?ref=seo 都会被忽略;HTTP 和 HTTPS 混用等于两个不同页面。
-
https://example.com/zh/✅ -
/zh/❌(相对路径) -
http://example.com/zh/❌(协议不一致) -
https://zh.example.com/✅(但需确保对应页的hreflang也指向此子域名)
如果用了子目录(/en/)、子域名(ja.example.com)或独立域名(example.jp),href 和 hreflang 必须一一映射,不能交叉混写。
别用 JS 动态插入 hreflang 标签
爬虫不执行 JS,动态生成的 <link> 标签对 SEO 完全无效。更危险的是:后端已静态输出,前端又用 document.head.appendChild() 重复加一遍,导致同语言被声明两次,Google 直接放弃解析。
必须静态生成。如果真要用 JS(如 SPA 路由),务必先清理旧标签:
document.querySelectorAll('link[rel="alternate"][hreflang]').forEach(el => el.remove());
然后显式插入,避免用 innerHTML += 这种不可控方式。
最容易被忽略的点:hreflang 关系必须双向、闭环、无 404。哪怕一个链接返回 404,或某页漏掉反向声明,整组就形同虚设。验证不能靠肉眼,得用 Google Search Console 的「国际化报告」或 Screaming Frog 抓取比对。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











