hreflang 必须在每语言页的 <head> 中完整互指所有版本并自指,值须严格符合 BCP 47(如 zh-cn、ja-jp),且与 <html lang> 一致;仅 <link> 标签有效,URL 必为绝对路径并返回 200。

hreflang 必须在每个语言页的 中完整互指所有版本
只在英文页写中文链接、不在中文页回指英文,整组 hreflang 就失效。Google 会认为“中文页没有对应英文版”,直接跳过索引或错配流量。
- 所有语言页(
https://example.com/en/、https://example.com/zh/、https://example.com/ja/)的<head>都要包含完全相同的四行:<link rel="alternate" hreflang="en" href="https://example.com/en/">、<link rel="alternate" hreflang="zh" href="https://example.com/zh/">、<link rel="alternate" hreflang="ja" href="https://example.com/ja/">、<link rel="alternate" hreflang="x-default" href="https://example.com/en/"> -
hreflang值必须指向**目标页面的实际语言**,不是当前页的语言。日文页里hreflang="ja"指向自己,hreflang="en"指向英文页 —— 不可颠倒或复用 - 漏掉任意一条(比如中文页没写
hreflang="ja"),Google 可能整组忽略,不建立语言关联
hreflang 值必须严格符合 BCP 47,大小写、连字符、空格都不能错
拼成 zh_CN、EN-US、chinese 或 en-us (末尾空格)全都不认。Googlebot 逐字符校验,错一个就当无效标签处理。
- 正确写法只有小写字母 + 连字符:
en、en-us、zh-cn、zh-hans、ja-jp、x-default - 区域码必须用 ISO 3166-1(如
US、JP、FR),不是域名后缀(uk错,gb对) - 不要混用脚本码和区域码:想标“台湾繁体中文”,优先用
zh-hant-tw,而非zh-tw(后者隐含简体习惯,易歧义)
hreflang 和 必须各自独立但逻辑一致
hreflang 是给搜索引擎看的链接关系,<html lang=""> 是给浏览器和辅助技术看的内容语言。两者不互通,但冲突会翻车。
使用 Puppeteer + Chrome 将 HTML 渲染为中文 PDF,自动处理图表等待、Tab 展开、动画、测高、白边消除、防分页,适用于看板、报表、网页和交互图表转 PDF。
- 日文页必须同时满足:
<html lang="ja">+hreflang="ja"指向自身;若lang="ja"却配hreflang="en",Google 会困惑“这页到底是日文还是英文” -
lang属性影响字体 fallback、拼写检查、屏幕阅读器发音;hreflang不影响这些,只影响搜索结果分发 - 页面内嵌其他语言段落(如英文术语),需额外加
<p lang="en">,否则屏幕阅读器仍用主语言读
hreflang 只对 有效,a 标签加了也白加
把 hreflang 写在 <a href="/zh/" hreflang="zh"> 里完全没用。浏览器不解析,Googlebot 不扫描,纯属浪费字符。
立即学习“前端免费学习笔记(深入)”;
- 真正生效的唯一位置是
<head>里的<link rel="alternate" hreflang="..." href="..."> - 用户点击切换语言?得靠 JS 跳转或服务端路由,
hreflang不参与任何前端交互 - URL 必须是绝对路径:
href="/zh/"或href="zh/"会被忽略;必须写成href="https://example.com/zh/"
x-default,且所有 URL 必须返回 200 状态码并真实渲染对应语言内容——缺一不可。


















