hreflang属性必须加,但仅适用于内容语义等价的多语言版本页面;需在每个语言页head中用绝对URL成组互指所有版本(含自身),严格遵循BCP 47格式(如zh-CN、en-US),且避免与canonical冲突。

hreflang属性到底要不要加
必须加,但只在有明确多语言版本页面时才加——比如你同时维护 example.com(英文)、example.com/zh/(简体中文)和 example.com/ja/(日文),且这些页面内容语义等价。如果只是页面里混了几个外语词、或用 JS 切换语言但 URL 不变,加 hreflang 不但没用,还可能被搜索引擎当成误导信号。
怎么写 hreflang 才不被 Google 忽略
常见错误是只在首页加,或只在 <link> 里写,漏掉双向声明。Google 要求:同一组语言变体之间必须互指,且每个页面都要声明自己和所有对应版本。
-
hreflang值必须用 ISO 639-1 语言码 + 可选 ISO 3166-1 国家码,如zh-CN、en-US、ja(国家码省略表示泛语言) - 必须出现在
<head>中的<link rel="alternate" hreflang="..." href="...">,不能只靠 HTTP 头或 XML Sitemap(后者可作补充,但不可替代) - 每个页面至少包含三条:
self(指向自己)、en(指向英文版)、zh-CN(指向中文版)……缺一不可 - URL 必须绝对路径,且能被爬虫直接访问(不能是 404、重定向链过长、或 robots.txt 拦截)
hreflang 和 rel="canonical" 冲突怎么办
冲突很常见:比如中文页设了 rel="canonical" 指向英文页,又加了 hreflang="zh-CN"——这等于告诉 Google:“这个中文页是英文页的副本,但又是独立语言版本”,逻辑矛盾,结果就是两个都降权。
正确做法是:
立即学习“前端免费学习笔记(深入)”;
- 同一语言不同 URL(如带参数的跟踪链接)才用
rel="canonical" - 不同语言的页面之间**绝不互相设 canonical**,各自保持独立 canonical
- 如果某语言页暂时没内容,宁可 404 或返回 410,也不要 302 跳转到主语言页再加 hreflang
验证 hreflang 是否生效的实操方法
别信插件截图,直接查 Google 搜索结果和 Search Console 数据。
- 在 Google 搜索
site:yourdomain.com [language](如site:example.com zh),看是否出现对应语言页;若只出英文页,说明 hreflang 未被识别 - 进 Search Console → “国际定位” → “语言” 报表,检查是否有“hreflang 无配对”或“hreflang 无效 URL”报错
- 用
curl -I检查响应头里有没有Link: <url>; rel="alternate"; hreflang="xx"(HTTP 头方式仅作备用,优先用 HTML link) - 注意:hreflang 生效通常要 2–6 周,且只影响多语言搜索结果排序,不影响单语言页的常规排名
fr 版本,也要同步更新所有已有语言页的 <link> 列表,漏掉任意一个,整组 hreflang 就可能失效。



















