hreflang和lang属性的语义用法

时间:2017-11-22 15:45:59

标签: html html5 multilingual semantic-markup hreflang

这是 SEO问题。

我很好奇如何以语义正确的方式标记HTML以及所使用的语言。如果我的标记错误,请纠正我。

我的问题是:当我已使用lang标记中的html属性时,是否需要hreflang标记中的link属性?

这两个指令在语义上是否不同?我的意思是:两个示例中link标记中的自引用是否会在语义上被理解为指示文档的语言?

下面的代码示例可能会澄清我的问题:

英文网页示例

http://example.com/en/

<!DOCTYPE html>
<html lang="en"> 
<head>
     <title>English webpage</title>
     <link rel="canonical" href="http://example.com/en">
     <link rel="alternate" href="http://example.com/en/" hreflang="en">
     <link rel="alternate" href="http://example.com/nl/" hreflang="nl">
     <link rel="alternate" href="http://example.com/en/" hreflang="x-default">
</head>
<body>
     <p>This is a webpage written in English. 
        This page is also available in Dutch. 
        The default language of this page is English. 
</body>
</html>

荷兰语网页示例

http://example.com/nl/

<!DOCTYPE html>
<html lang="nl"> 
<head>
     <title>Nederlandse webpagina</title> 
     <link rel="canonical" href="http://example.com/nl">
     <link rel="alternate" href="http://example.com/en/" hreflang="en">
     <link rel="alternate" href="http://example.com/nl/" hreflang="nl">
     <link rel="alternate" href="http://example.com/en/" hreflang="x-default">
</head>
<body>
     <p>Dit is een Nederlandstalige web pagina. 
        Deze pagina is beschikbaar in het Engels. 
        De standaardtaal van deze pagina is Engels.
</body>
</html>

1 个答案:

答案 0 :(得分:2)

您应始终在lang元素上提供html属性。

与您的案件相关的两个原因:

  • HTML规范描述了how the language of a node gets determinedhreflang属性在此处不起作用。

    如果您未在lang元素上提供html此节点没有语言。

  • 如果hreflang - link的值与值不同,则alternate + hreflang链接仅被解释为指向当前文档的翻译html - lang

      

    如果alternate关键字与hreflang属性一起使用,并且该属性的值与根元素的语言不同,则表示引用的文档是翻译。

    如果您未在lang元素上提供html,则不会将alternate + hreflang链接视为指向翻译。

即使用户代理通过考虑自我引用的¹alternate + hreflang链接来推断文档的语言,也有可能会失败的情况:

  • 如果HTML文档在本地打开,则它不再具有HTTP URL,因此用户代理无法推断alternate + hreflang链接是否引用此文档。< / p>

  • 如果通过不同的网址检索HTML文档(例如,使用跟踪参数),则alternate + hreflang链接不再引用当前网址,因此用户代理可以不推测它也适用于这个URL。

(使用canonical链接,可以减轻这两种情况,但这是用户代理必须支持的另一件事。并非所有情况都可以。)

¹严格地说,自引用alternate + hreflang超链接不是语义的,因为alternate被定义为引用“当前文档的替代表示”,但是文档当然不是自己的替代表示。但是,正如Google Search documents its use一样,现在看到这个标记很常见。