Attention aux erreurs HTML dans le <head> pour Google

Mathieu Chartier SEO 1 commentaire

Google et l'interprétation des balises meta HTML

John Mueller a fourni des informations importantes sur la qualité du code dans le <head> des pages HTML. La blogueuse Jennifer Slegg a rapporté ces informations récupérées lors d'un Google AMA (American Medical Association) concernant ce genre de problème récurrent. Tout le <head> est scrapé par Google avant traitement, alors les erreurs peuvent coûter cher...

Tout d'abord, il est important de mettre les choses au clair. J'ai souvent dit, après avoir codé plusieurs robots par moi-même, qu'il y avait peu de chances que Google "saute" des balises lors du crawl. Je ne vous cache pas que des non-techniciens m'ont parfois renvoyé dans les filets en me faisant comprendre mon énorme erreur de croire ce que j'avançais. Manque de chance, John Mueller a bel et bien confirmé que Google récupère tout le <head> d'un seul tenant, avec ou sans les erreurs qu'il comprend, et c'est bien là le souci pour certains sites. Devrais-je donc remercier le googler de confirmer ce qui me semblait inévitable depuis toujours ? :-)

Partant de ce constat, nous savons que Google récupère la balise <title> par ce biais, mais aussi les métadonnées ("description", "keywords"...) ainsi que les balises portant l'attribut rel="canonical", etc. Tout ce qui est dans le <head> est crawlé et récupéré, pour un traitement sûrement ultérieur de valorisation ou non des données. C'est sûrement dans cette étape secondaire que le moteur attribut des "points" au <title>, et à priori plus du tout aux balises <meta> (difficile à prouver à 100% en réalité, les tests étant parfois contradictoires même si tout le monde s'accorde à dire qu'elles ne comptent plus, sauf pour s'afficher dans les SERP).

Le problème, c'est que certains webdesigners ou intégrateurs web font des erreurs dans le <head> et introduisent des balises qui n'ont rien à y faire. Pour rappel, peu d'éléments ont le droit d'être intégré dans le code HTML du <head>. Pour faire un tour rapide des tags autorisés (il ne me semble pas que j'en oublie, c'est à vérifier) : <title> (obligatoire en théorie), <link>, <meta>, <style>, <script> (et <noscript> par conséquent) et <base> (non recommandé pour l'accessibilité). Si vous voyez une autre balise que celles présentées précédemment, alors votre <head> risque d'être mal lu et interprété par les robots de Google.

Toute autre balise constitue une faute, et tant bien même que vous en auriez besoin absolument, il faudrait alors placer ces balises non-head à la fin de la section d'entête. John Mueller est catégorique sur ce point, les balises qui suivent des éléments non autorisés du <head> ne sont pas lues et interprétées comme il se doit. Il prend notamment l'exemple des hreflang qui seraient placés après un code inexact et par conséquent non pris en compte par Google. Voici sa déclaration complète (récupérées sur Reddit) :

(...) un problème technique quelque peu de niche que j'ai vu récemment est que certains types de scripts (y compris certains de Google) injectent des balises HTML non-head dans le haut du <head> d'une page. Pour nous, cela ferme implicitement l'entête, et décale toutes les métadonnées dans le corps de la page. Pour hreflang, cela entraîne souvent la suppression complète de ces annotations. Si vous utilisez hreflang, je revérifierais la source rendue avec l'outil de test Rich Results (c'est le seul qui montre actuellement la source rendue), et vérifiez qu'il n'y a pas de balises <iframe> ou de <div> au-dessus des annotations hreflang.

Pour résumer, les mauvaises balises, soit intégrées manuellement, soit injectées par du code Javascript, ont pour effet de clôturer le <head> pour Google. Par conséquent, tout ce qui suit un tel code erroné est considéré dans le corps de la page, et non plus dans l'entête. Comme Google crawle tout, certaines balises se retrouvent donc hors du <head>, et pas vraiment non plus dans le <body>, alors toutes les conséquences que cela peut produire. Le porte-parole évoque toutefois un problème de niche, mais il serait intéressant de vérifier s'il n'est pas dans nos propres sites, notamment lorsque l'on utilise des CMS comme WordPress avec des extensions à la pelle (dont les codes générés sont transparents à nos yeux...).

Ce genre d'information est souvent utile pour les webmasters, il est dommage que Google ne mette pas plus en avant ce genre d'erreurs techniques pénalisantes dans certains cas. Alors comme l'a dit John Mueller, vérifiez certaines erreurs avec l'outil de test des résultats enrichis, ou tout simplement avec le validateur W3C (qui saura vous rappeler vos erreurs dans le <head>). Il aurait été intéressant de savoir si Google interprète le <title> si ce dernier n'est pas placé entre des balises <head>...</head>, mais ce sera pour une prochaine fois... ;-)