Ce guide vous aide à identifier et à résoudre les problèmes JavaScript susceptibles d’empêcher votre page, ou du contenu spécifique sur des pages alimentées par JavaScript, d’apparaître dans la Recherche Google.
Bien que la Recherche Google exécute JavaScript, il existe certaines différences et limitations dont vous devez tenir compte lors de la conception de vos pages et applications pour vous adapter à la manière dont les robots d’indexation accèdent à votre contenu et le restituent.
Notre guide sur les bases du SEO JavaScript contient plus d’informations sur la façon d’optimiser votre site JavaScript pour la Recherche Google.
Googlebot est conçu pour être un bon citoyen du Web. L’exploration est sa priorité principale, tout en veillant à ne pas dégrader l’expérience des utilisateurs visitant le site.
Googlebot et son composant WRS (Web Rendering Service) analysent et identifient en continu les ressources qui ne contribuent pas au contenu essentiel de la page et peuvent ne pas récupérer ces ressources.
Par exemple, les requêtes de rapport et d’erreur qui ne contribuent pas au contenu essentiel de la page, ainsi que d’autres types de requêtes similaires, sont inutilisées ou inutiles pour extraire le contenu essentiel de la page. Les analyses côté client peuvent ne pas fournir une représentation complète ou précise de l’activité de Googlebot et du WRS sur votre site.
Utilisez le rapport sur les statistiques d’exploration dans la Google Search Console pour surveiller l’activité de Googlebot et du WRS ainsi que les commentaires sur votre site.
Si vous suspectez que des problèmes JavaScript peuvent empêcher votre page, ou du contenu spécifique sur des pages alimentées par JavaScript, d’apparaître dans la Recherche Google, suivez ces étapes. Si vous n’êtes pas sûr que JavaScript soit la cause principale, suivez notre guide général de débogage pour déterminer le problème spécifique.
- Pour tester la manière dont Google explore et restitue une URL, utilisez le Test de résultats enrichis ou l’ Outil d’inspection d’URL dans Search Console.
Vous pouvez voir les ressources chargées, la sortie et les exceptions de la console JavaScript, le DOM restitué et plus d’informations.Facultativement, nous recommandons également de collecter et d’auditer les erreurs JavaScript rencontrées par les utilisateurs, y compris Googlebot, sur votre site pour identifier les problèmes potentiels qui peuvent affecter la façon dont le contenu est restitué.
Voici un exemple montrant comment consigner les erreurs JavaScript qui sont enregistrées dans le gestionnaire onerror global. Notez que certains types d’erreurs JavaScript, telles qu’une erreur d’analyse syntaxique, ne peuvent pas être enregistrées avec cette méthode. - Assurez-vous d’éviter
les erreurs soft 404erreurs. Dans une application monopage (SPA), cela peut être particulièrement difficile. Pour empêcher l’indexation des pages d’erreur, vous pouvez utiliser une ou les deux stratégies suivantes :- Rediriger vers une URL où le serveur répond avec un
404code d’état. - Ajouter ou modifier la balise
metarobotssur.
noindex
200Lorsqu’une SPA utilise du JavaScript côté client pour gérer les erreurs, elle signale souvent un code d’état HTTP au lieu ducode d’état approprié - Rediriger vers une URL où le serveur répond avec un
- . Cela peut entraîner l’indexation des pages d’erreur et leur affichage éventuel dans les résultats de recherche. Attendez-vous à ce que Googlebot refuse.
les demandes d’autorisation des utilisateursLes fonctionnalités qui nécessitent l'autorisation de l'utilisateur n'ont pas de sens pour Googlebot, ni pour tous les utilisateurs. Par exemple, si vous rendez l'API Caméra - obligatoire, Googlebot ne peut pas vous fournir de caméra.
Fournissez plutôt un moyen pour les utilisateurs d’accéder à votre contenu sans être forcés d’autoriser l’accès à la caméra.
N’utilisez pas de fragments d’URL pour charger un contenu différent. Une SPA peut utiliser des fragments d’URL (par exemple https://example.com/#/products) pour charger différentes vues. Le schéma d’exploration AJAX a été abandonné depuis 2015, vous ne pouvez donc pas compter sur les fragments d’URL pour fonctionner avec Googlebot.
Nous vous recommandons d’utiliser l’ History API - pour charger un contenu différent en fonction de l’URL dans une SPA.
Ne vous fiez pas à la persistance des données pour diffuser du contenu. Le WRS charge chaque URL (consultez Comment fonctionne la Recherche Google- pour un aperçu de la manière dont Google découvre le contenu), en suivant les redirections de serveur et de client, comme un navigateur classique.
Cependant, le WRS ne conserve pas l’état entre les chargements de page : - Les données du stockage local (Local Storage) et du stockage de session (Session Storage) sont effacées entre les chargements de page.
- pour un aperçu de la manière dont Google découvre le contenu), en suivant les redirections de serveur et de client, comme un navigateur classique.
- Les cookies HTTP sont effacés entre les chargements de page.
Utilisez l’empreinte numérique du contenu (content fingerprinting) pour éviter les problèmes de mise en cache avec Googlebot.Googlebot met en cache de manière agressive afin de réduire les requêtes réseau et l'utilisation des ressources. Le WRS peut ignorer les en-têtes de mise en cache. Cela peut amener le WRS à utiliser des ressources JavaScript ou CSS obsolètes. L'empreinte numérique du contenu résout ce problème en faisant d'une empreinte du contenu une partie du nom de fichier, commemain.2bb85551.js .
L’empreinte dépend du contenu du fichier, de sorte que les mises à jour génèrent un nom de fichier différent à chaque fois. Consultez le guide web.dev sur les stratégies de mise en cache à long terme - pour en savoir plus. Assurez-vous que votre application utilise la détection de fonctionnalités
pour toutes les API critiques dont elle a besoin et fournissez un comportement de repli ou un polyfill le cas échéant. - Certaines fonctionnalités Web peuvent ne pas être encore adoptées par tous les agents utilisateurs et certaines peuvent désactiver intentionnellement certaines fonctionnalités. Par exemple, si vous utilisez WebGL pour restituer des effets photo dans le navigateur, la détection de fonctionnalités montre que Googlebot ne prend pas en charge WebGL.
Pour résoudre ce problème, vous pouvez ignorer l’effet photo ou décider d’utiliser le rendu côté serveur pour pré-rendre les effets photo, ce qui rend votre contenu accessible à tous, y compris à Googlebot.
Assurez-vous que votre contenu fonctionne avec les connexions HTTP.Googlebot utilise des requêtes HTTP pour récupérer le contenu de votre serveur. Il ne prend pas en charge les autres types de connexions, telles queWebSocketsouWebRTC connexions.
Pour éviter les problèmes avec de telles connexions, assurez-vous de fournir un repli HTTP pour récupérer le contenu et utilisez une gestion des erreurs robuste ainsi que. - la détection de fonctionnalités.
Assurez-vous que vos composants Web s’affichent comme prévu. Utilisez le Test de résultats enrichis ou l’ Outil d’inspection d’URL
pour vérifier si le HTML restitué contient tout le contenu attendu. Le WRS fusionnele DOM léger et le DOM fantôme (light DOM and shadow DOM) pour l’analyse.<slot>mécanisme pour le contenu DOM léger, consultez la documentation du composant Web pour plus d’informations ou utilisez un autre composant Web à la place.
Pour plus d’informations, consultez bonnes pratiques pour les composants Web. - Si vous utilisez un paywall basé sur JavaScript, examinez l’implémentation.
Certaines solutions de paywall JavaScript incluent le contenu complet dans la réponse du serveur, puis utilisent JavaScript pour le masquer jusqu’à ce que le statut de l’abonnement soit confirmé. Ce n’est pas un moyen fiable de limiter l’accès au contenu. Assurez-vous que votre paywall ne fournit le contenu complet qu’une fois le statut de l’abonnement confirmé. - Une fois les éléments de cette liste de contrôle corrigés, testez votre page avec l’ Outil de test des résultats enrichis ou l’ outil d’inspection d’URL dans Search Console à nouveau.
Si vous avez résolu le problème, une coche verte apparaît et aucune erreur n’est affichée. Si vous voyez toujours des erreurs, publiez dans la communauté d’aide Search Central.
Comment nous l'appliquons
When a JavaScript site indexes badly, the cause is usually a blocked resource, a timeout or content injected after render. We work through those three in order instead of rewriting the application.
Services associés