Mercredi 7 octobre 2009
Aujourd’hui, nous sommes ravis de proposer un nouveau standard pour rendre les sites Web basés sur AJAX indexables par les robots. Cela profitera aux webmasters et aux utilisateurs en rendant le contenu des sites Web riches et interactifs basés sur AJAX universellement accessible via les résultats de recherche sur n’importe quel moteur de recherche qui choisit d’y participer. Nous pensons que rendre ce contenu disponible pour l’exploration et l’indexation pourrait considérablement améliorer le Web.

Bien que les sites Web basés sur AJAX soient populaires auprès des utilisateurs, les moteurs de recherche ne sont traditionnellement pas en mesure d’accéder à leur contenu. Lors de notre dernière vérification, près de 70 % des sites Web que nous connaissons utilisent JavaScript sous une forme ou une une autre. Bien sûr, la majeure partie de ce JavaScript n’est pas AJAX, mais plus les moteurs de recherche peuvent explorer et indexer AJAX, plus les développeurs peuvent ajouter des fonctionnalités riches à leurs sites Web tout en apparaissant dans les moteurs de recherche.
Parmi les objectifs que nous souhaitions atteindre avec cette proposition figurent :
- Des modifications minimes sont requises à mesure que le site Web se développe
- Les utilisateurs et les moteurs de recherche voient le même contenu (pas de cloaking)
- Les moteurs de recherche peuvent envoyer les utilisateurs directement vers l’URL AJAX (et non vers une copie statique)
- Les propriétaires de sites ont un moyen de vérifier que leur site Web AJAX s’affiche correctement et que le robot d’exploration a donc accès à tout le contenu
Voici comment les moteurs de recherche exploreraient et indexeraient AJAX dans notre proposition initiale :
- Modifier légèrement les fragments d’URL pour les pages AJAX dynamiques (stateful)
Les pages AJAX dynamiques affichent le même contenu lorsqu’on y accède directement. Ce sont des pages qui pourraient être référencées dans les résultats de recherche. Au lieu d’une URL telle que
https://example.com/page?query#state
nous aimerions proposer l’ajout d’un jeton pour permettre de reconnaître ces URL :
https://example.com/page?query#[FRAGMENTTOKEN]state. Sur la base d’un examen des URL actuelles sur le Web, nous proposons d’utiliser « ! » (un point d’exclamation) comme jeton pour cela. L’URL proposée qui pourrait être affichée dans les résultats de recherche serait alors :
https://example.com/page?query#!state. - Utiliser un navigateur sans interface graphique (headless browser) qui génère un instantané HTML sur votre serveur Web
Le navigateur sans interface graphique est utilisé pour accéder à la page AJAX et génère du code HTML basé sur l’état final du navigateur. Seules les URL spécialement étiquetées sont transmises au navigateur sans interface graphique pour traitement. En procédant ainsi côté serveur, le propriétaire du site Web contrôle le code HTML généré et peut facilement vérifier que tout le JavaScript est exécuté correctement. Un exemple d’un tel navigateur est
HtmlUnit, un « navigateur sans interface graphique pour programmes Java » open source. - Permettre aux robots d’exploration des moteurs de recherche d’accéder à ces URL en échappant l’état
Les fragments d’URL n’étant jamais envoyés avec les requêtes aux serveurs, il est nécessaire de modifier légèrement l’URL utilisée pour accéder à la page. En même temps, cela indique au serveur d’utiliser le navigateur sans interface graphique pour générer du code HTML au lieu de renvoyer une page avec JavaScript. D’autres URL existantes, telles que celles utilisées par l’utilisateur, seraient traitées normalement, en contournant le navigateur sans interface graphique. Nous proposons d’échapper les informations d’état et de les ajouter aux paramètres de requête avec un jeton. En utilisant l’exemple précédent, l’une de ces URL serait
https://example.com/page?query&[QUERYTOKEN]=state. D’après notre analyse des URL actuelles sur le Web, nous proposons d’utiliser_escaped_fragment_comme jeton. L’URL proposée deviendrait alors
https://example.com/page?query&_escaped_fragment_=state. - Afficher l’URL d’origine aux utilisateurs dans les résultats de recherche
Pour améliorer l’expérience utilisateur, il est logique de renvoyer directement les utilisateurs vers les pages basées sur AJAX. Pour ce faire, vous pouvez afficher l’URL d’origine (telle que
https://example.com/page?query#!statedans notre exemple ci-dessus) dans les résultats de recherche. Les moteurs de recherche peuvent vérifier que le texte indexable renvoyé à Googlebot est identique ou constitue un sous-ensemble du texte renvoyé aux utilisateurs.

En résumé, en commençant par une URL dynamique telle que
https://example.com/dictionary.html#AJAX, elle pourrait être disponible à la fois pour les robots d’exploration et les utilisateurs sous la forme https://example.com/dictionary.html#!AJAX qui pourrait être explorée comme
https://example.com/dictionary.html?_escaped_fragment_=AJAX qui à son tour serait affichée aux utilisateurs et accessible sous le nom https://example.com/dictionary.html#!AJAX
Nous travaillons actuellement sur une proposition et une mise en œuvre prototype. Vos commentaires sont les bienvenus — veuillez ajouter vos commentaires ci-dessous ou dans notre
Forum d’aide pour les webmasters. Merci de l’intérêt que vous portez à rendre le Web basé sur AJAX accessible et utile grâce aux moteurs de recherche !
Article de blog par
John Mueller, analyste des tendances pour les webmasters, Google Zurich
Comment nous l'appliquons
Google announcements age. We keep this post here for the record, and we note for clients whether the behaviour it describes still applies today or has since been superseded.
Services associés