Что произойдет, если метатеги присутствуют в теле документа? - PullRequest
52 голосов
/ 19 сентября 2009

Я работаю над приложением 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>

Мне интересно, насколько хорошо помещать мета-теги в тело HTML-документа. Как это влияет:

  1. Поисковые системы
  2. браузеры

Ответы [ 9 ]

40 голосов
/ 19 сентября 2009

Это, конечно, недействительно согласно HTML4.01. META-теги разрешены только в HEAD (как, скажем, TITLE), поэтому, помещая их в BODY, вы по сути создаете недопустимую разметку.

Из поверхностных тестов кажется, что некоторые браузеры (например, Firefox 3.5 и Safari 4) фактически помещают эти элементы в HEAD при создании дерева документов. Это неудивительно: браузеры, как известно, допускают и пытаются интерпретировать все виды разбитой разметки.

Наличие неверной разметки редко является хорошей идеей . Нестандартная обработка в браузерах может привести к различным труднопреодолимым (и поведенческим) несоответствиям. Вместо того, чтобы полагаться на догадки браузера, лучше следовать стандарту.

Я не знаю, как поисковые системы реагируют на такой суп с тегами, но я не рискну экспериментировать, чтобы выяснить :) Возможно, они только разберут тег HEAD для получения определенной информации и вообще пропустят ваши теги, содержащиеся в BODY. Или, может быть, они считают, что это были некоторые злонамеренные попытки азартных игр и страницы черного списка, содержащие такую ​​разметку. Кто знает.

Суть - избегайте этого всякий раз, когда это возможно.

28 голосов
/ 04 октября 2011

Суть в том, чтобы по возможности этого избежать , когда DOCTYPE запрещает это . Я думаю, что это определенно разрешено в HTML5 и очень полезно в случаях использования микроданных. Пример: http://schema.org/Event

6 голосов
/ 19 сентября 2009

Я бы этого не делал. Это не то место, куда идут эти теги, и поисковые системы могут рассматривать его как спам. Если вы можете реорганизовать главную страницу, вы всегда можете добавить заполнитель содержимого в разделе заголовка. Я сделал это тривиально с:

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

Таким образом, вы можете добавить любой понравившийся контент в раздел заголовка на своей странице:

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

    <meta ... >

</asp:Content>
5 голосов
/ 24 января 2013

Если ваша цель - поисковая оптимизация, то, вероятно, будет хорошей идеей следовать стандартам и поместить все ваши метатеги в <head>. Однако что касается поведения браузера, если вы поместите теги <meta> в ваш <body>, они все равно будут работать. Я решил проверить это, используя несколько тегов <meta http-equiv="refresh"/> и <title> в документах, соответствующих стандартам.

Результаты моих тестов:

Firefox 18, Firefox 3.6, Firefox Mobile, Chrome 24, Chrome для мобильных устройств, Opera 12, IE6, IE8, IE10:

  • Все теги <meta> в теле обработаны.
  • Первый тег <title> в документе был обработан, даже если он был в теле. Последующие теги <title> были проигнорированы.
  • Начала действовать самая ранняя директива meta refresh, означающая, что обе были обработаны.

IE9:

  • То же, что и выше, за исключением того, что все теги <title> в теле были проигнорированы.
  • IE10 в режиме стандартов IE9 также ведет себя следующим образом.
  • IE9 в режиме стандартов IE8 вел себя так же, как IE8, позволяя тегу 1 <title> в теле.

Итак, что происходит, когда вы используете метатеги в теле? По большому счету они вроде бы работают нормально. Мета-теги, вероятно, будут обработаны, поэтому, если вы не можете поместить их в голову, я бы не стал слишком беспокоиться.

3 голосов
/ 20 марта 2013

Некоторые метатеги, предназначенные для поисковых систем, не будут учитываться поисковыми системами в разделе тела страницы.

Например, Google говорит, что он не будет соблюдать rel = canonical в теле страницы, а только в заголовке страницы. Вот что говорит Мэтт Каттс из Google :

Мы не разрешаем rel = canonical в ТЕЛЕ (потому что, как я уже говорил, люди будут спамить это),

2 голосов
/ 05 января 2013

Я бы сказал, чтобы вы использовали это. Я нашел метатеги внутри тела на различных веб-страницах, и они находятся в одном из 10 лучших поисков (в Google). Это показывает, по крайней мере для меня, что поисковые движки не против, если вы использовали этот подход.

Вы должны идти вперед, если другого пути нет.

0 голосов
/ 18 января 2019

метатеги могут быть добавлены в любом месте HTML.

Сканеры могут их читать , но единственная проблема - это когда вам приходится делиться своими страницами через какое-то приложение, такое как Facebook Messenger, WhatsApp и т. Д.

Эти приложения читают только метатеги , присутствующие внутри заголовка . Таким образом, og: image, og: description свойства метатег , если он помещен в body tag , не читаются и, следовательно, не будут отображаться при совместном использовании такие приложения.

Если это только для целей SEO, вы можете добавить метатег в любом месте, но рекомендуется добавлять внутрь заголовок только

0 голосов
/ 22 июля 2017

Наличие тега META Description на веб-сайтах является недопустимой разметкой, однако это не является большой проблемой, так как поисковые системы могут регулярно находить тег там, где он есть. Мой сайт делает это, посмотрите на мой HTML

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

META находится на веб-сайте BODY, однако он был проиндексирован Google, и мета-описание страницы было задано в виде клика по тексту в результатах поиска Google.

0 голосов
/ 21 июня 2013

Я поместил некоторые метатеги в тело, но это из-за технологии микроданных. Когда у меня нет обычного элемента с информацией, необходимой для описания объекта в соответствии со словарем schema.org, я устанавливаю метатег с этим содержимым. Я предпочитаю делать это таким образом, чтобы установить элемент с display: none. Способ с отображением: ни один не может вызвать больше проблем Google вместо этого, насколько я знаю. Я согласен, что это не лучшая практика, но когда я проверяю свой документ (HTML5), я прохожу проверку без ошибок. Также я сделал этот трюк для нескольких проектов, и ни один из них не имеет проблем с Google или другой поисковой системой. Даже микроданные улучшают рейтинг в поисковых системах. Я не знаю, что именно вы хотите сделать с этими метатегами в теле, потому что я не видел микроданных в вашем коде. Если вам нужен этот подход, я думаю, что это нормально, но в других случаях метаэлементы должны быть в разделе head!

...