web-dev-qa-db-fra.com

Que se passe-t-il si les balises META sont présentes dans le corps du document?

Je travaille sur une application ASP et le code, le modèle et les fichiers sont organisés de manière à ne pas pouvoir modifier quoi que ce soit en dehors de la balise body. Je pense donc à insérer les balises méta dans le corps - comme ceci:

<!-- 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>

Je me demande à quel point il est bon de placer des balises méta dans le corps d'un document HTML. Comment cela affecte-t-il:

  1. moteurs de recherche
  2. navigateurs
52
Salman A

Ceci est bien sûr invalid selon HTML4.01. Les balises META sont autorisées uniquement dans HEAD (tout comme, par exemple, TITLE). Ainsi, en les plaçant dans un BODY, vous créez essentiellement un balisage non valide.

D'après les tests superficiels, il semble que certains navigateurs (Firefox 3.5 et Safari 4, par exemple) insèrent ces éléments dans HEAD lors de la création d'une arborescence de documents. Cela n’a rien d’étonnant: les navigateurs sont connus pour tolérer et essayer d’interpréter tous les types de balises cassées.

Avoir un balisage invalide est rarement une bonne idée. Une gestion non standard par les navigateurs peut entraîner diverses incohérences dans le rendu (et le comportement) difficiles à identifier. Au lieu de compter sur le navigateur en devinant, il est préférable de suivre une norme.

Je ne sais pas comment les moteurs de recherche réagissent à une telle balise de balises, mais je ne risquerais pas d'expérimenter pour le savoir :) Peut-être ne font-ils qu'analyser la balise HEAD pour certaines informations et ignoreront vos balises contenant du corps. Ou peut-être considèrent-ils qu'il s'agit de tentatives de jeu malveillants et de pages de liste noire contenant un tel balisage. Qui sait. 

La ligne du bas - éviter cela autant que possible.

40
kangax

L’essentiel est d’éviter cela autant que possible lorsque le DOCTYPE l’interdit. Je pense que cela est définitivement autorisé dans HTML5 et très utile dans les cas d'utilisation de microdonnées. Exemple: http://schema.org/Event

28
Michael H

Je ne le ferais pas. Ce n'est pas là que ces balises vont, et les moteurs de recherche pourraient voir cela comme du spam. Si vous pouvez réorganiser la page maître, vous pouvez toujours ajouter un contentholderholder dans la section head. Je l'ai fait trivialement avec:

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

De cette façon, vous pouvez ajouter le contenu de votre choix dans la section head de votre page:

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

    <meta ... >

</asp:Content>
7
John Lockwood

Si votre objectif est l'optimisation des moteurs de recherche, il est probablement judicieux de respecter les normes et de placer toutes vos balises méta dans le <head>. Toutefois, en ce qui concerne le comportement du navigateur, si vous placez des balises <meta> dans votre <body>, elles continueront de fonctionner. J'ai décidé de tester cela en utilisant plusieurs balises <meta http-equiv="refresh"/> et <title> dans un document par ailleurs conforme aux normes.

Les résultats de mes tests:

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

  • Toutes les balises <meta> du corps ont été traitées.
  • La première balise <title> du document a été traitée, même si elle était dans le corps. Les balises <title> suivantes ont été ignorées.
  • La directive d'actualisation méta la plus ancienne a pris effet, ce qui implique que les deux ont été traités.

IE9:

  • Comme ci-dessus, sauf que toutes les balises <title> du corps ont été ignorées.
  • IE10 en mode IE9 Standards se comporte également comme ceci.
  • IE9 en mode Normes IE8 se comportait de la même manière que IE8, autorisant 1 balise <title> dans le corps.

Alors, que se passe-t-il lorsque vous utilisez des balises méta dans le corps? En gros, ils semblent bien fonctionner. Les balises méta seront probablement traitées, donc si vous ne pouvez pas les mettre dans la tête, je ne m'inquiéterais pas trop.

5
nullability

Certaines balises méta destinées aux moteurs de recherche ne seront pas honorées par les moteurs de recherche dans la section Corps de la page. 

Par exemple, Google dit qu'il n'honorera pas un rel = canonique dans le corps de la page, mais uniquement dans la tête de la page. Voici ce que dit Matt Cutts de Google :

Nous n’autorisons pas rel = canonique dans le CORPS (car, comme je l’ai dit, les gens le spammeraient),

3

Je dirais que vous l'utilisez. J'ai trouvé des balises méta à l'intérieur du corps sur différentes pages Web, et elles figurent parmi les 10 premières recherches (sur Google). Du moins pour moi, cela montre que les moteurs de recherche ne sont pas gênés si vous avez utilisé cette approche. 

Vous devez y aller s'il n'y a pas d'autre moyen.

2
Parvinder Singh

Les balises méta peuvent être ajoutées n’importe où dans le code HTML.

Les robots Web peuvent les lire mais le seul problème est lorsque vous devez partager vos pages sur une application telle que Facebook Messenger, WhatsApp, etc. 

Ces applications ne lisent que méta tags présentes dans le head tag . Ainsi, les og: image, og: description propriétés de balise méta si elles sont placées dans balise body ne sont pas lues et ne seront donc pas affichées lors du partage dans de telles applications.

Si c'est uniquement à des fins de référencement, vous pouvez ajouter méta-tag n'importe où mais il est recommandé d'ajouter l'intérieur balise principale uniquement

0
Sitaram

J'ai mis des balises méta dans le corps, mais cela est dû à la technologie des microdonnées. Lorsque je n'ai pas d'élément régulier avec l'info, qu'il me faut décrire l'objet selon le vocabulaire schema.org, je mets une balise méta avec ce contenu. Je préfère le faire de cette façon plutôt que de définir un élément avec display: aucun. La façon avec affichage: aucun ne peut causer plus de problèmes de Google au lieu de cela, autant que je sache. Je conviens que ce n'est pas la meilleure pratique, mais lorsque je valide mon document (HTML5), je passe la validation sans erreur. J'ai aussi fait cette astuce pour plusieurs projets et aucun d'entre eux n'a de problème avec Google ou un autre moteur de recherche. Même les microdonnées améliorent le classement des moteurs de recherche. Je ne sais pas ce que vous voulez exactement faire avec ces méta-tags dans le corps, car je n'ai vu aucune microdonnée dans votre code. Si vous en avez besoin pour cette approche, je pense que c'est correct, mais dans d'autres cas, les méta-éléments doivent figurer dans la section head! 

0
Kaloyan Stamatov

Avoir la balise META Description sur les sites Web est une balise non valide, mais ce n’est pas un gros problème car les moteurs de recherche peuvent régulièrement trouver la balise où qu’elle se trouve. Mon site Web fait cela, regardez mon HTML 

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

La méta se trouve dans le site Web, mais elle a été indexée par Google et la méta-description de la page a été définie comme étant le clic sur le texte dans les résultats de la recherche Google. 

0
cousbrad