多语言网站优化和hreflang标签

2020-02-25

从近两年我个人的SEO服务项目情况看,有越来越多的公司需要做多语言网站优化。国内外贸SEO做多语种网站,以电商公司居多,要往外卖产品。国外公司也有不少要做中文网站,不过电子商务类的不多,大品牌、留学/移民之类的比较多。

如果涉及语言比较少,比如只有英语和中文网站,语言使用范围不复杂的话,做SEO时倒没有什么特殊要求,英文、中文网站可以放在两个独立域名上,也可以放在同一个域名的两个子域名上,甚至可以放在二级目录上,内容和结构等可以没什么关联,基本上可以各做各的。即使页面内容是对应翻译的也没问题,中译英或英译中,内容一样,语言不同,搜索引擎不会认为是复制内容

为什么需要hreflang标签?

有时候情况复杂点,同一个国家使用多种语言,而且使用人数差别没有那么大,像中文在中国这样具有压倒性主流地位,如加拿大使用英语、法语,瑞士使用德语、法语、意大利语。一个语言也经常在多个国家使用,英语在英国、美国、加拿大、澳大利亚、新西兰,甚至新加坡,都是最使用广泛的语言。

在这些稍复杂的情况下,需要考虑一些多语言网站的SEO问题:

  • 同是英文网站(或其它语言),不同国家或地区有各自独立域名,虽然也许有些许修正,如不同拼写(英国拼为colour,美国拼为color之类),但主体内容是一样的,怎样避免被搜索引擎认为是复制内容?
  • 一个语种页面收录良好,另一个语种收录有问题,能不能让搜索引擎知道另一个语种版本在哪里,从而改进收录?
  • 同一个国家,有不同语言使用者,怎样让搜索引擎知道这个页面是针对哪个语言的?

使用hreflang标签设置语言和地区,可以帮助解决这些问题。

hreflang标签的格式和用法

hreflang标签的标准格式是这样的:

<link rel=”alternate” href=”https://www.abc.com.cn” hreflang=”zh-cn” />

hreflang标签分两部分,前面是语言,后面是地区。上面标签指明的是,这个页面针对中文(zh)、中国地区用户(cn)。

对应的:

<link rel=”alternate” href=”https://www.abc.com.au” hreflang=”en-au” />

指的是英文、澳大利亚。

<link rel=”alternate” href=”https://www.abc.co.uk” hreflang=”en-gb” />

指的是英文、英国。

在三个网站上,上面三个标签都放上,搜索引擎就知道针对不同语言、地区的版本是关联的,各自的网址是什么,并且不会被当成复制内容。

hreflang标签的几个技术细节

还有几个细节要注意。

hreflang标签可以放在同一个域名的不同页面上,也可以跨域名,放在不同域名上。

hreflang可以只写语言部分代码,如:

<link rel=”alternate” href=”https://www.abc.com” hreflang=”en” />

但不能只写地区部分:

<link rel=”alternate” href=”https://www.abc.ca” hreflang=”ca” />

上面这个是无效的,只写地区代码ca,不会被自动判断为是英文还是法文。

所有语言页面上都要加上所有hreflang标签,形成互相确认。中文页面指明自己是中文,同时指明英文版本在哪里,英文页面同样要确认自己是英文版本,对应的中文版本在哪里。

代表语言的代码要符合ISO 369-1标准,代表地区的代码要符合ISO 3166-1 Alpha 2标准。写代码时最好到官网查一下,不要想当然。比如上面提到的,英国的地区代码是GB,不是UK,和域名后缀不一样的。

中文的语言代码是ZH,不是CN。这个是有效的:

<link rel=”alternate” href=”https://www.abc.cn” hreflang=”zh” />

这个是无效的:

<link rel=”alternate” href=”https://www.abc.cn” hreflang=”cn” />

再比如,最近一个客户的日文页面写成这样:

<link rel=”alternate” href=”https://www.abc.co.jp” hreflang=”jp” />

这个是错的。前面提到,可以只写语言代码,但日语的语言代码是JA,不是JP。

再比如,韩语的语言代码是KO,不是KR,虽然韩国的地区代码和域名后缀是kr。

Google对多语言页面的权重和排名处理

Google检测出带有hreflang标签的页面后,会把符合要求的、互相指向确认的一组页面(内容相同,但针对的语言和地区不同)当作一个整体看待。用户搜索关键词时,Google通常应该把权重最高的那个语言版本返回到搜索引擎页面上,但如果通过hreflang标签发现有一个权重虽低,但更满足用户语言和地区需求的页面,那么Google会返回这个权重低些的页面。

比如,一个在法国的用户搜索某个词,按正常排名算法返回的是权重最高的en版本页面,同时Google通过hreflang标签发现这个en页面有对应的fr版本,更符合法国用户的需求,所以就在搜索结果中返回fr页面了。有时候,这个fr页面可能权重比较低,外人看不出为什么这个页面会排名这么高,其实不是它自己的原因,是对应的en页面权重高。

不过,虽然这组多语言页面被当作一个整体,但页面权重不会叠加,还是按各个页面自己的权重计算排名的,大部分情况下,也就是看权重最高的那个语言版本。

--- END ---


( ! ) Warning: realpath(): open_basedir restriction in effect. File(/www/server/panel/tmp) is not within the allowed path(s): (/www/wwwroot/www.hqtweb.com/:/tmp/) in /www/wwwroot/www.hqtweb.com/wp-includes/functions.php on line 2124
Call Stack
#TimeMemoryFunctionLocation
10.30608340928shutdown_action_hook( ).../load.php:0
20.30608340928do_action( $hook_name = 'shutdown' ).../load.php:1260
30.30608341304WP_Hook->do_action( $args = [0 => ''] ).../plugin.php:517
40.30608341304WP_Hook->apply_filters( $value = '', $args = [0 => ''] ).../class-wp-hook.php:348
50.30668301912wpcf7_cleanup_captcha_files( ).../class-wp-hook.php:322
60.30668301912wpcf7_init_captcha( ).../really-simple-captcha.php:555
70.30668302576ReallySimpleCaptcha->__construct( ).../really-simple-captcha.php:396
80.30668303592path_join( $base = '/www/wwwroot/www.hqtweb.com/wp-content/plugins/really-simple-captcha', $path = 'tmp' ).../really-simple-captcha.php:46
90.30668303592path_is_absolute( $path = 'tmp' ).../functions.php:2154
100.30668303592realpath( $path = 'tmp' ).../functions.php:2124