这是不 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>
答案 0 :(得分:2)
您应始终在lang
元素上提供html
属性。
与您的案件相关的两个原因:
HTML规范描述了how the language of a node gets determined。 hreflang
属性在此处不起作用。
如果您未在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一样,现在看到这个标记很常见。