关于html:使用h1的正确方法? (关于文档大纲和SEO)

Proper way to use h1? (Regarding document outline and SEO)

我仍在尝试使自己熟悉HTML5,并且有些东西让人感到困惑。

我曾经读过杰里米·基思(Jeremy Keith)的书和《 HTML5 Doctor》(通过这个问题),他们说HTML5使得可以使用多个h1成为可能。在HTML5中,每个部分都可以具有自己的heading元素,因此可以有多个h1。我已经看到了一个Wordpress主题框架"下划线",它似乎在全部方面都得到了应用。

但是,这似乎对较旧的浏览器(尚支持HTML5)构成了定义网站结构/文档大纲的问题。而且,这对SEO造成了问题。

我偶然发现了Matt Cutts(来自Google)的视频,并重新阅读了Keith的书,该书建议限制使用h1并使用常规文档大纲(每页仅使用一个或两个h1,然后使用多个h2h3等)。马特·卡茨(Matt Cutts)还暗示,多个h1对于SEO不太好。

然而,

  • 我以前从未认真关注站点结构/文档大纲。因此,我永远都不知道旧的浏览器(HTML5之前的版本)是如何读取网站结构/文档大纲的。存在一个HTML5大纲器,但找不到HTML4大纲器。
  • 马特·卡茨(Matt Cutts)的视频(关于HTML5和SEO)于2009年发布。
    不知道Google是否已经支持新的HTML5概述方式
    文献。

所以我的问题是,如果我想:

  • 支持较旧的浏览器(例如Firefox 3.0和IE 6)以显示正确的网站结构/文档大纲
  • 在SEO中取得不错的成绩

我应该使用哪一个:多个h1(用HTML5完成)或常规方式?

此HTML5之一(示例取自HTML5 Doctor):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
My fantastic site
<section>
  About me
  <p>
I am a man who lives a fascinating life. Oh the stories I could tell you...
</p>
  <section>
    What I do for a living
    <p>
I sell enterprise-managed ant farms.
</p>
  </section>
</section>
<section>
  Contact
  <p>
Shout my name and I will come to you.
</p>
</section>

还是常规方式?

1
2
3
4
5
6
7
8
9
10
11
12
13
My fantastic site
  About me
  <p>
I am a man who lives a fascinating life. Oh the stories I could tell you...
</p>
    What I do for a living
    <p>
I sell enterprise-managed ant farms.
</p>
  Contact
  <p>
Shout my name and I will come to you.
</p>


使用新格式。
很多人会使用h3h2 s,这也很好。

实际上,他们将使用html5提供的sectionarticleheaderfooter元素,然后使用h3h4作为该文档段的标题(因为担心SEO)罚款/传统样式|布局怪异)。

也可以。

如果您再次观看Cuts的视频,他说要尽量减少使用h1 -仅在确实有必要时才使用倍数。

在这一点上,这还没有真正改变。

Google不会因为拥有大量孩子而谋杀您。
Google希望每个人都表示内容发生了根本变化。

不管是否有节(section / article / etc)元素,都是如此。

Google还可以正确地搜寻仅支持AJAX或JavaScript的网站,并拥有自己的内容丰富的元数据系统……它们足够复杂,可以解析section或< X3>。

更担心内容的质量,如果您准备使用它,可以担心它们用于搜索结果的Google特定的元数据等。
...让Google担心导航语义(只要您使用得很好,不要做任何可疑的事情)。

较小的抓取工具,他们知道... ...但这是基于每个抓取工具的,大多数人只需要关注Google和Bing和Yahoo,其他抓取工具要么依赖Google,要么是非常特定于域的(例如,出于某种原因,如果您希望在选择使用的汽车租赁爬虫上获得较高的排名... ...此时,无论如何,您都应该提供某种XML / JSON供稿)。


死锁,第二个示例不包含任何section元素。但是,您可以将节元素与h1以外的标题一起使用。我认为这就是您的问题的重点:

每个分段元素中的h1

1
2
3
4
5
6
<section>
  …
  <section>
    …
  </section>
</section>

或"计算的"标题级别

1
2
3
4
5
6
<section>
  …
  <section>
    …
  </section>
</section>

在语义/技术上,它们是相同的。

SEO应该不是问题,因为" h1到处都是"将在整个网络中使用(并且已经被使用),并且主要的搜索引擎都知道这一点。如果要支持HTML5,则必须了解概述算法。我敢打赌,他们的搜寻器/ API已经正确计算了真实的标题级别,例如HTML5大纲工具。

您要使用h2-h6作为切片元素标题的唯一原因是旧的辅助功能软件,例如屏幕阅读器。它们通常提供大纲菜单,因此用户可以直接跳到某个标题。因此,如果您始终使用h1,则不了解HTML5的较旧的屏幕阅读器会将所有标题都声明为h1,因为它们无法计算正确的轮廓线级别。但是,例如Jaws 13(屏幕阅读器的当前版本)在IE,AFAIR中仅获得HTML5正确的" h1到处都是",如果在HTML5页面中使用其他标题级别,它将变得很困惑。当然,这是一个错误,但是这是一个很好的例子,坚持"旧方法"并不总是适用于较新的软件。

因此,您可能会遇到任何一种问题。

我认为您应该坚持HTML5规范的建议,那就是:对所有节元素标题使用h1。因为此规范是将来的用户代理,辅助功能工具,搜索引擎和其他服务/软件用来构建其产品的规范。

但是,这当然取决于您的用例。如果您知道访问者的统计信息,则应使用它们为您的特殊情况做出正确的决定。例如。如果您的网站未来可能无法使用很多年,请使用现在获得最佳支持的网站。


最好的方法是使用HTML5并使用此链接使它们在旧的浏览器中运行,因为Google可以更好地为您的网站做好准备,并且如果您使用新的标记,可以考虑使用新技术(这样您的网站就可以更好)。

1
2
3
 <!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js">
<![endif]-->

将其放在您网站的头部,对于旧版本的IE来说可以正常使用