多语言网站源码里,经常会同时看到两种写法:

<html lang="zh-CN">

以及:

<link rel="alternate"
      hreflang="zh-CN"
      href="https://example.com/zh-cn/page/">

两者都出现了“zh-CN”,但用途并不一样。lang描述的是当前页面使用什么语言,rel="alternate"配合hreflang则用于说明这个页面还有哪些语言或地区版本。

rel="alternate"和lang="zh-CN"有什么区别?

lang="zh-CN"表示什么

lang是HTML的语言属性,通常写在根元素上:

<html lang="zh-CN">

它表示当前页面主要使用中文,并带有中国大陆地区信息。

其他常见写法包括:

<html lang="en">
<html lang="en-US">
<html lang="en-GB">

这个属性首先服务于HTML语义、浏览器和无障碍工具。例如屏幕阅读器需要知道页面应该按照中文还是英文的发音规则朗读。

Google目前主要根据页面实际可见内容判断语言,并不会只看lang属性。因此,把中文页面的lang改成en,并不能把它变成英文页面。

rel="alternate"表示什么

rel描述当前网页与另一个资源之间的关系。

alternate表示“替代版本”,但它本身并不专门代表多语言。例如RSS也可能使用:

<link rel="alternate"
      type="application/rss+xml"
      href="/feed.xml">

在多语言SEO中,通常会把alternate和hreflang一起使用:

<link rel="alternate"
      hreflang="zh-CN"
      href="https://example.com/zh-cn/page/">

这段代码表示:指定URL是当前内容面向中文、中国大陆用户的对应版本。

hreflang负责语言和地区

真正用于多语言页面匹配的是hreflang。

字段作用
rel="alternate"表示这是一个替代版本
hreflang="zh-CN"指定对应语言或地区
href指定该版本的URL

因此,单独写rel="alternate"并不能完成多语言SEO配置。

lang和hreflang有什么区别

比较项langhreflang
描述对象当前页面对应的其他语言或地区页面
主要作用声明页面语言建立多语言URL关系
常见位置HTML根元素head中的link标签
是否需要URL不需要需要
能否互相替代不能不能

如果网站只有一种语言,通常正确设置lang即可。只有确实存在多个语言或地区版本时,才需要进一步配置hreflang。

中英文网站怎么配置

假设网站有两个对应页面:

https://example.com/zh/page/
https://example.com/en/page/

中文页面可以写:

<html lang="zh-CN">

<link rel="alternate"
      hreflang="zh-CN"
      href="https://example.com/zh/page/">

<link rel="alternate"
      hreflang="en"
      href="https://example.com/en/page/">

英文页面则把自身语言改成:

<html lang="en">

同时保留相同的一组hreflang对应关系。

Google要求这些语言版本能够互相确认,因此中文页声明英文页后,英文页也应该声明中文页,并且每个页面都要包含自身版本。

zh-CN和zh-Hans怎么选

zh-CN强调中文加中国大陆地区,zh-Hans强调简体中文书写系统。

如果页面明确面向中国大陆用户,使用:

zh-CN

比较直观。

如果只是区分简体与繁体,而不强调国家或地区,可以根据网站结构使用:

zh-Hans
zh-Hant

多地区中文网站还可能使用:

zh-CN
zh-TW
zh-HK

具体选择应该对应网站实际提供的页面版本,而不是为了SEO机械增加地区代码。

x-default用在什么地方

多语言网站还可能设置:

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

x-default并不是一种语言,它通常用来指定默认页面。

例如国际网站首页先让用户选择English、简体中文、Deutsch等语言,这个语言选择页就可以作为默认版本。

配置时常见哪些错误

第一种是只设置lang,却认为搜索引擎已经知道中英文页面之间的对应关系。实际上,lang不会建立URL之间的关联。

第二种是只写:

<link rel="alternate" href="/en/">

却没有hreflang,这样无法明确说明这个替代页面对应哪种语言。

第三种是语言版本只单向声明。例如中文页指向英文页,但英文页没有返回对应关系。

还有一种常见错误,是所有页面模板都固定输出lang="zh-CN",导致英文、日文页面仍然声明为中文。动态网站应该根据当前页面实际语言生成对应属性。

参考资料

  1. Google多语言网页版本说明

  2. MDN HTML lang属性说明

  3. MDN rel属性说明