09688 出海 GEO · AI 搜索 + SEO
教程免费阅读技术与实体约 3 分钟读完09688 编辑部

规范标签和语言标签别混用:多语言站最常见的收录事故

规范标签(canonical)用来标记"内容一字不差、网址不同"的页面,比如带不带参数的同一页;语言标签(hreflang)用来标记"同一篇内容的不同语言版本"。人看来翻译后是同一篇,爬虫看的是字符,就是不同的页面。最常见的事故是把所有语言版本的规范标签都指向英文页或首页,结果其他语言版本被当成重复页不收录。正确做法:每个语言页面的规范标签指向它自己,再用语言标签互相声明,加一个默认版本;用子目录做多语言,不自动跳转,只做切换提示;标题、描述这些元标签也要翻译。

两个标签解决的是两件不同的事。

很多多语言站上线后,非英文版本迟迟不被收录,甚至曝光直接归零。查下来十有八九是规范标签(canonical)和语言标签(hreflang)用混了。

先分清:人看的是意思,爬虫看的是字符

一篇文章翻译成中文、英文、西班牙文,在人看来是同一篇内容。但在爬虫看来,"狗"和"Dog"是完全不同的字符,所以这是三个不同的页面。

情况用哪个例子
内容一字不差,只是网址不同规范标签/zh 和 /zh?from=xxx 打开是同一个页面
同一篇内容,不同语言版本语言标签/en/about 和 /zh/about

一句话记住:规范标签管"同一页的不同网址",语言标签管"同一篇的不同语言"。

最常见的错误

  • 所有语言页的规范标签都指向英文页:等于告诉搜索引擎"中文页是英文页的副本,别收录",中文版自然出不来;
  • 翻译出来的首页,规范标签都指向主站首页:同样的问题;
  • 只加了规范标签,漏了语言标签:搜索引擎不知道这几页是互为语言版本,可能当成重复内容处理。

正确写法

以关于页面为例,英文页 /en/about 的 <head> 里:

<link rel="canonical" href="https://example.com/en/about" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about" />
<link rel="alternate" hreflang="zh" href="https://example.com/zh/about" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about" />

中文页 /zh/about 里,规范标签改成指向它自己,语言标签那几行保持一样:

<link rel="canonical" href="https://example.com/zh/about" />
<link rel="alternate" hreflang="en" href="https://example.com/en/about" />
<link rel="alternate" hreflang="zh" href="https://example.com/zh/about" />
<link rel="alternate" hreflang="x-default" href="https://example.com/en/about" />

要点三条:

  1. 每个语言页的规范标签指向它自己;
  2. 语言标签每一页都要写全,互相声明,包括自己;
  3. 加一个 x-default,告诉搜索引擎语言不匹配时默认给哪一版。

多语言站的另外几条规矩

  • 用子目录做多语言(如 /en/、/zh/),比用脚本或 Cookie 在同一个网址切换语言好得多;
  • 不要自动跳转,不要替用户选语言,也不要一个网址显示多种语言;
  • 可以根据浏览器语言或地区在页面上提示"我们有你的语言版本,是否切换",用户点了再跳;
  • 标题、描述这些元标签也要翻译,只翻正文不翻元标签,搜索结果里显示的还是外文。

已经出事故了怎么办

先把规范标签和语言标签按上面改对,重新提交网站地图,然后耐心等。这类问题修好后恢复需要时间,期间别再反复改结构,免得搜索引擎又要重新判断一遍。

小结

同一页的不同网址用规范标签,同一篇的不同语言用语言标签;每个语言页的规范标签指向自己,语言标签互相写全。用脚本切换语言的问题,见「多语言网站用脚本切换语言、网址不变,有什么问题?」。