4

不是SEO 问题。

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

我的问题是:当我已经使用标签lang中的属性时,是否需要标签中的属性?htmlhreflanglink

两个指令在语义上是否不同?我的意思是:两个示例中标签中的自引用是否会在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>
4

1 回答 1

2

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

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

  • HTML 规范描述了如何确定节点的语言。该hreflang属性在这里不起作用。

    如果您不提供langhtml元素,则此节点没有语言。

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

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

    如果您不提供langhtml元素,alternate+hreflang链接不被视为指向翻译。


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

  • 如果 HTML 文档在本地打开,则它不再有 HTTP URL,因此用户代理无法推断alternate+hreflang链接指向此文档。

  • 如果 HTML 文档通过不同的 URL(例如,使用跟踪参数)检索到,alternate+hreflang链接不再指向当前 URL,因此用户代理不能推断它也适用于该 URL。

(通过canonical链接,这两种情况都可以得到缓解,但这是用户代理必须支持的另一件事。并非所有人都这样做。)


¹ 严格来说,自引用alternate+hreflang超链接不是语义的,因为alternate被定义为引用“当前文档的替代表示”,但文档当然不是其自身的替代表示。然而,随着谷歌搜索记录了它的使用,现在很容易看到这个标记。

于 2017-11-22T23:02:17.010 回答