真正起作用的是带 hreflang 的 rel="alternate" 组合,单独使用无效;hreflang 值须严格符合 bcp 47 规范,大小写、连字符敏感;每页必须双向互指且用绝对 url;x-default 是兜底入口而非默认语言;js 动态插入易导致冲突失效;内容一致性决定 hreflang 是否被信任。

rel="alternate" 本身不指引多语种,真正起作用的是带 hreflang 的 rel="alternate" 组合。单独写 <link rel="alternate" href="..."> 对多语言 SEO 没效果。
hreflang 值必须严格符合 BCP 47 规范
Google 和 Bing 解析 hreflang 时完全大小写敏感、连字符强制、无容错。常见错误直接导致整条 <link> 被忽略:
-
en-us(语言应小写,地区大写 → 正确是en-US) -
zh_CN(下划线非法 → 必须用zh-CN或更推荐的zh-Hans) -
chinese(非标准语言子标签 → 只能用zh,zh-Hans,zh-Hant等) -
zh-TW(未指明脚本,易被降权 → 推荐zh-Hant-TW)
每页必须双向互指且用绝对 URL
中文页声明英文版,英文页也必须声明中文版;所有 href 必须是完整协议+域名的绝对地址,否则爬虫直接跳过:
- ❌
/en/、./en/、https://example.com/en/?lang=en(含查询参数会被视为不同页面) - ✅
https://example.com/en/(结尾斜杠建议统一,避免与/en冲突) - 漏掉任一反向链接 → 整组
hreflang关系失效,Google 可能放弃索引多语言版本
x-default 不是默认语言,而是兜底入口
hreflang="x-default" 不代表“自动选这个”,它只在用户语言未匹配任何已声明值时生效,常用于指向语言选择器页或最通用的首页:
- 不要把它当
zh-CN的别名,也不要用它替代具体语言标签 - 如果站点主语言是英语,
x-default通常设为https://example.com/en/ - 若提供语言选择器页(如
/language-selector/),那是更合理的x-default目标
JS 动态插入 hreflang 极易破坏 SEO
后端已静态输出 hreflang,前端再用 JS 创建新 <link> 并 appendChild 到 ,会导致重复声明 —— Google 视为冲突,整组失效:
- 优先全部静态生成,服务端模板或构建时注入
- SPA 必须动态注入时,先
document.querySelectorAll('link[rel="alternate"][hreflang]')清理旧节点 - 禁止用
innerHTML +=拼接,会覆盖已有<link>或遗漏rel/hreflang属性 - 验证闭环:用 Screaming Frog 抓取全站,检查每页是否都包含完整、互指、可访问的
hreflang链接
zh-Hans 页面有完整产品介绍,而 en-US 页面只有标题和空段落,Google 会判定“对应关系不可信”,直接弃用所有 hreflang 标注。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











