如果元标记存在于文档正文中会发生什么?

时间:2009-09-19 05:26:40

标签: html templates asp-classic seo meta-tags

我正在开发一个ASP应用程序,代码,模板和文件的组织方式不允许我改变body标签之外的任何内容。所以我正在考虑在体内插入元标记 - 就像这样:

<!-- FEW ASP INCLUDES -->
<html>
    <head>
    <!-- FALLBACK TITLE AND DESCRIPTION -->
    <title>Default Title</title>
    <meta name="description" content="Default Description">
</head>
<body>
    <!-- SOME HTML MARKUP -->
    <div class="dynamic-content">
        <!-- InstanceBeginEditable name="dynamic-content" -->
        <!-- THIS IS WHERE I CAN WRITE ASP CODE -->
        <title><%= Page.Meta.GetTitle( yada, yada ) %></title>
        <meta name="description" content="<%= Page.Meta.GetDescription( yada, yada ) %>">
        <!-- InstanceEndEditable -->
    </div>
    <!-- SOME MORE HTML MARKUP -->
</body>
</html>

我想知道将meta标签放在HTML文档正文中有多好。它是如何影响的:

  1. 搜索引擎
  2. 浏览器

9 个答案:

答案 0 :(得分:40)

根据HTML4.01,这当然是无效。 META标签是only allowed within HEAD(就像TITLE一样),所以通过把它放到BODY中,你实际上是在创建一个无效的标记。

在粗略测试中,似乎某些浏览器(例如Firefox 3.5和Safari 4)在创建文档树时实际上将这些元素放入HEAD中。这并不奇怪:众所周知,浏览器会容忍并尝试解释所有类型的破坏标记。

无效标记很少是个好主意。浏览器的非标准处理可能会导致各种难以处理的渲染(和行为)不一致。不要依赖浏览器猜测,最好遵循标准。

我不知道搜索引擎如何对这样的标签汤做出反应,但我不想冒险尝试找出:)也许他们只解析HEAD标签以获取某些信息,并且会完全跳过你的BODY包含的标签。或许他们认为这些是恶意赌博尝试和包含此类标记的黑名单页面。谁知道。

底线 - 尽可能避免这种情况。

答案 1 :(得分:28)

最重要的是尽可能避免这种情况当DOCTYPE禁止它时。我认为这在HTML5中是绝对允许的,在使用微数据的情况下非常有用。示例:http://schema.org/Event

答案 2 :(得分:7)

我不会这样做。这不是那些标签的去向,搜索引擎可能会将其视为垃圾邮件。如果您可以重新组织母版页,则始终可以在head部分中添加contentplaceholder。我已经完成了以下工作:

<asp:ContentPlaceHolder ID="HeadTags" runat="server" />

通过这种方式,您可以在页面上添加您喜欢的任何内容:

<asp:Content ID="Whatever" ContentPlaceHolderID="HeadTags" runat="server" >

    <meta ... >

</asp:Content>

答案 3 :(得分:5)

如果您的目标是搜索引擎优化,那么遵循标准并将所有元标记放在<head>中可能是个好主意。但是,就浏览器行为而言,如果您将<meta>标记放入<body>,它们仍会起作用。我决定使用符合标准的其他文档中的多个<meta http-equiv="refresh"/>代码和<title>代码对此进行测试。

我的测试结果:

Firefox 18,Firefox 3.6,Firefox Mobile,Chrome 24,Chrome for Mobile,Opera 12,IE6,IE8,IE10:

  • 正在处理正文中的所有<meta>标记。
  • 处理了文档中的第一个<title>标记,即使它位于正文中。后续的<title>代码被忽略。
  • 最早的元刷新指令生效,暗示两者都已处理。

IE9:

  • 与上述相同,但忽略了正文中的所有<title>标记。
  • IE9标准模式下的IE10也表现得像这样。
  • IE8标准模式下的IE9与IE8的行为相同,允许身体中有1 <title>个标记。

那么,当您在身体中使用元标记时会发生什么?总的来说,它们似乎工作得很好。 meta标签可能会被处理,所以如果你不能把它们放在头部那么我就不会担心太多。

答案 4 :(得分:3)

一些用于搜索引擎的元标记将不会受到页面正文部分中搜索引擎的尊重。

例如Google表示它不会在页面正文中尊重rel = canonical,而只会在页面的头部。 Here is what Matt Cutts from Google says

  

我们不允许在身体中使用rel = canonical(因为正如我所提到的,人们会垃圾邮件),

答案 5 :(得分:2)

我会说你要用它。我在各种网页上找到了身体内部的元标记,并且它们位于十大搜索之一(谷歌上)。至少在我看来,如果你使用过这种方法,那么searh引擎并不介意。

如果没有别的办法,你必须继续前进。

答案 6 :(得分:0)

我已将一些元标记放入体内,但这是因为Microdata技术。 当我没有带有信息的常规元素时,我需要根据schema.org词汇描述对象,我设置了一个带有此内容的元标记。我更喜欢这样做,用display:none设置元素。就我所知,显示方式:无可能导致更多谷歌问题而不是这个问题。我同意这不是最好的做法,但是当我验证我的文档(HTML5)时,我通过了验证,没有错误。此外,我已经为几个项目完成了这个技巧,但没有一个项目存在谷歌或其他搜索引擎的问题。甚至微数据也提高了搜索引擎的排名。我不知道你想用这个元标记到底是什么,因为我没有在你的代码中看到任何微数据。如果您需要这种方法我觉得没关系,但在其他情况下元元素必须在头部!

答案 7 :(得分:0)

网站中的META描述标记是无效标记,但不是一个大问题,因为搜索引擎可以定期找到标记。我的网站这样做,看看我的HTML

http://cameras.specced.co.uk/compare/268/Canon_EOS_200D

META位于网站BODY,但它已被谷歌索引,并且页面元描述已被设置为谷歌搜索结果中的点击文本。

答案 8 :(得分:0)

可以在HTML的任何位置添加

元标记

网络爬虫可以阅读它们,但是唯一的问题是当您必须通过Facebook Messenger,whatsapp等某个应用程序共享页面时。

这些应用程序仅读取 head标签中的元标记。因此,如果放置在 body标签中的 meta标签 og:image,og:description 属性不会被读取,因此不会显示在此类应用程序中共享。

如果仅用于SEO,则可以在任意位置添加元标记,但建议仅在 head标签内部添加