Hreflang是什么?

如果您的网站以不同的语言、国家或地区向用户提供内容,您可以使用特殊标记让搜索引擎知道这些内容是为谁提供的——以及内容应该如何呈现给特定的用户。

hreflang属性——也被称为HTML lang属性——告诉像谷歌这样的搜索引擎这些不同的变体。

实现hreflang有助于搜索引擎按语言或地区将用户指向页面的最合适版本。

注意:谷歌和Yandex使用hreflang属性,而Bing使用元标记语言

下面是hreflang的一个例子。假设你在美国的时候在搜索引擎上搜索“收藏品”。

这是一个搜索列表,你可能会看到:


如果在英国进行同样的搜索,结果是不同的:

设置Hreflang标签

对于针对多个区域和语言进行优化的页面,hreflang标签必须包含在标题部分。下面是一个例子:

链接rel="alternate" href="http://example.com/alternate-page " hreflang="x" />

剖析代码,我们可以学到很多信息。

1.链接rel = "替代":这个标签中的链接是这个页面的另一个版本。

2.hreflang = " x ":它是alternate,因为它用的是另一种语言,这个语言是x。

3.href = " https://example.com/alternate-page ":可在此URL中找到备用页面。

下面是代码示例:

链接rel="alternate" href="http://example.com/alternate-page " hreflang="en-us" />

这段代码告诉谷歌,这个英文版的网页是专门针对美国的读者的。

实现Hreflang标记的方法

有三种不同的方法可以告诉搜索引擎一个页面的多种语言和位置版本。

1.HTML标记

您可以通过添加元素添加到页眉。

如果您没有站点地图或没有能力为您的站点指定HTTP响应头,那么这可能是一个有用的选项。

所有页面变体都应该在元素中有一组元素。(每个页面变体(包括其自身)都有一个链接。)

下面,您将看到应该放在所有显示页面的部分的HTML。这样做会将美国、英国、通用英语使用者和德语使用者导向本地化页面。

谷歌将根据用户的浏览器设置为用户返回适当的结果。


2.HTTP头

您可以返回一个带有页面GET响应的HTTP报头,以告诉谷歌关于页面的所有语言和区域变体的信息。这对于非html文件(如pdf)非常有用。

标题的格式如下:

链接:< url1 >;rel = "替代";hreflang = " lang_code_1 ", < url2 >;rel = "替代";hreflang = " lang_code_2 ",……

必须为页面的每个版本(包括请求的版本)指定一组, rel="alternate"和hreflang值,用逗号分隔,如下例所示。

每个版本的页面返回的Link:头是相同的。

HTTP/1.1200ok
内容类型:application/pdf
链接:; rel=“备用”;hreflang=“en”,
< http://de-ch.example.com/file.pdf >;rel = "替代";hreflang = " de-ch ",
< http://de.example.com/file.pdf >;rel = "替代";hreflang = "德"

3.网站地图

你可以使用XML站点地图通知谷歌每个URL的所有语言和地区变体。

为此,添加一个指定单个URL的元素,并用子条目列出页面的每种语言/地区变体,包括页面本身。所以,如果你有三个版本的页面,你的站点地图将有三个条目,每个条目都有三个相同的子条目。

这是一个面向全世界讲英语的人的英语页面,该页面的等效版本面向全世界讲德语的人和瑞士讲德语的人。

以下是你网站上的所有url:

  • www.example.com/english/page.html-针对英语使用者。
  • www.example.com/deutsch/page.html-针对德语使用者。
  • www.example.com/schweiz-deutsch/page.html-针对在瑞士说德语的人。

以下是这三个页面的网站地图:

<?xml版本“1.0”编码“utf - 8”? >

< urlsetxmlns"http://www.sitemaps.org/schemas/sitemap/0.9"

xmlns: xhtml“http://www.w3.org/1999/xhtml”>

< url >

http://www.example.com/english/page.html< / loc >

< xhtml:链接

雷尔“替代”

hreflang“德”

href“http://www.example.com/deutsch/page.html”/>

< xhtml:链接

雷尔“替代”

hreflang“de-ch”

href“http://www.example.com/schweiz-deutsch/page.html”/>

< xhtml:链接

雷尔“替代”

hreflang“嗯”

href“http://www.example.com/english/page.html”/>

< / url >

< url >

http://www.example.com/deutsch/page.html< / loc >

< xhtml:链接

雷尔“替代”

hreflang“德”

href“http://www.example.com/deutsch/page.html”/>

< xhtml:链接

雷尔“替代”

hreflang“de-ch”

href“http://www.example.com/schweiz-deutsch/page.html”/>

< xhtml:链接

雷尔“替代”

hreflang“嗯”

href“http://www.example.com/english/page.html”/>

< / url >

< url >

http://www.example.com/schweiz-deutsch/page.html< / loc >

< xhtml:链接

雷尔“替代”

hreflang“德”

href“http://www.example.com/deutsch/page.html”/>

< xhtml:链接

雷尔“替代”

hreflang“de-ch”

href“http://www.example.com/schweiz-deutsch/page.html”/>

< xhtml:链接

雷尔“替代”

hreflang“嗯”

href“http://www.example.com/english/page.html”/>

< / url >

< / urlset >

通用目标与X-Default

hreflang x - default标签指定在没有其他语言变体时显示给用户的默认页面或回退页面。您不必使用它们,但谷歌建议您这样做。这是它的样子:



所有方法的指南

谷歌提供了一个准则清单以获取本地化的页面版本。

1.所有语言版本必须包括语言变体和语言本身。

2.备用网址必须是完全合格的。

3.备用网址必须在同一个域中。

4.考虑包含一个囊括所有内容的URL针对地理位置不明的语言用户。

5.标签将被忽略如果两页纸没有互相指向。

6.链接新扩展的语言页面双向的原始语言

7.添加一个后备页无与伦比的语言。

常见的Hreflang标签问题

使用hreflang标签可能会出现许多潜在的问题。下面是hreflang常见的问题。

1.没有包含返回链接。

如果页面A链接到页面B,那么页面B也必须链接回页面A。如果页面没有相应的返回链接,注释可能会被误解。

2.不正确的语言代码。

必须包含ISO 639-1格式的语言代码,以及(可选)ISO 3166 Alpha 2格式的区域。

3.传入的hreflang注释无效。

当有问题的URL有一个或多个传入的无效hreflang注释时,就会发生这种情况。这可能是无效的语言或区域代码。让我们来看一个例子。

如果URL是https://example.com/en/ 下面的代码已添加到另一个区域页面…

它是无效的,因为“en-uk”应该是“en-gb”。

4.输出hreflang注释无效。

这意味着有问题的URL有一个或多个无效的输出hreflang注释(例如无效的语言或地区代码)。

如果URL是https://example.com/de/并且有下面的代码…

这是不正确的,因为“en-uk”应该是“en-gb”。

5.将hreflang注释发送到noindex url。

这意味着有问题的URL至少有一个非索引的输出hreflang注释URL。Hreflang标签被搜索引擎解释为索引指令。

假设我们有英文版和德文版。但是,如果德语页面有一个noindex标记,这意味着有一个不为该页面编制索引的指令。

网址:https://example.com/de/

<!doctype html >

< html lang =“en”>

< >头

示例

< meta name = "机器人"内容= " noindex, nofollow”>

< >身体…< /身体>

< / html >

我们将在美国页面上有以下hreflang标签:

如果URL是https://example.com/us/

<!doctype html >

< html lang =“en”>

< >头

示例

< meta name = "机器人"内容= " noindex, nofollow”>

< >身体…< /身体>

< / html >

这意味着我们告诉搜索引擎索引DE页面,但是在该页面上没有索引标签。这种相互冲突的指令会让搜索引擎感到困惑,以至于他们可能会完全忽略hreflang。

6.没有索引URL有传入hreflang。

这意味着所讨论的URL被定义为hreflang替代,但不是索引。如果你有一个英文(美国)页面,其中hreflang指向德文(DE)页面,这意味着搜索引擎将被指示为这两个英文页面编制索引德语版。

但是,如果英文页面上也有一个no index标记,这将是一条不为英文页面编制索引的指令。

所以,hreflang说“请为英文页面建立索引”,而no索引说的是“不要为英文页面建立索引”。

这种相互冲突的指令会让搜索引擎感到困惑,以至于他们可能会完全忽略hreflang。

7.有外发hreflang注释到损坏的url。

这意味着所讨论的URL至少有一个传出的hreflang注释,该注释返回为未找到(4XX)或错误(5XX)。

8.有外发hreflang注释到规范化的url。

这意味着有问题的URL至少有一个输出hreflang注释,该注释被规范化为另一个URL。

9规范化URL具有传入的hreflang。

这意味着所讨论的URL被定义为hreflang替代URL,但被规范化为另一个URL。

10将传出的hreflang批注添加到不允许的URL。

这意味着在robots.txt中,有问题的URL至少有一个输出hreflang注释URL是不允许的。

11.有冲突的传入hreflang注释。

这意味着有问题的URL有多个不同的传入hreflang注释。

例如,如果URL是https://example.com/de/,那么问题将会是这个页面有来自一个页面的传入hreflang:

...如果它也有来自另一个页面的传入的hreflang,这与上面的不同;

12.有冲突的输出hreflang注释。

这意味着有问题的URL有一个或多个输出的hreflang注释,它们指定相同的URL,但使用不同的hreflang,因此这两个注释之间存在冲突。

如果URL是https://example.com/us/…问题将是如果上述URL有冲突的输出hreflang;

13.有多个自引用的hreflang注释。

这意味着所讨论的URL具有一个或多个自引用的hreflang注释,这些注释指定不同的hreflang值,因此注释之间存在冲突。

如果URL是https://example.com/us/ ... 如果URL具有冲突的自引用hreflang,则会出现问题;

14.对多个url有外发hreflang注释。

这意味着有问题的URL具有hreflang注释,这些注释将相同的hreflang指定给多个不同的URL,因此不同注释之间存在冲突。

如果URL是https://example.com/us/…如果URL有冲突的输出hreflang将会有一个问题;

15.使用相对url的输出hreflang注释。

这意味着有问题的URL具有至少一个作为相对URL引用的输出hreflang注释。

如果URL是https://example.com/us/page-1/...如果URL使用相对URL有hreflang会有一个问题;

16.不匹配的hreflang和HTML lang声明。

这意味着所讨论的URL具有不匹配的hreflang注释和HTML lang属性。

如果URL是https://example.com/us/ …如果URL具有HTML lang属性,则会出现问题:

< meta http-equiv =“内容语言”内容=“en”>

...和一个不同的hreflang值:

17.失踪的互惠hreflang。

这意味着有问题的URL有hreflang注释,但至少有一个替代的hreflang URL没有相互作用。

如果URL是https://example.com/us/…如果URL有一个外发的hreflang就会有问题。

而URL https://example.com/de/将有以下hreflang,但没有反向链接回/us/页面。

18.有外发的hreflang注释来重定向url。

这意味着有问题的URL至少有一个传出的hreflang注释,该注释被重定向到另一个URL。

以https://example.com/page-1/ …如果包含hreflang注释,则会出现问题:

19.未支持或配置错误的hreflang。

这意味着有问题的URL有一个或多个输出的hreflang注释配置不正确。

如果URL是https://example.com/us/,如果它配置错误或不支持hreflang,就会有问题:

另一个例子:

< a href = " https://example.com/de/ " hreflang = " de-de " > < / >

资源

欲进一步阅读元描述,请参考以下内容: