La technologie Ajax présente un souci majeur en terme de référencement car son code n'est pas lu par les moteurs de recherche, ces derniers ne pouvant pas exécuter le Javascript (.js ou <script>).
Hors depuis quelque mois, Google a mis en place une solution tierce, qui par l'intermédiaire d'un crawler rend visible le code pour GoogleBot.
Explications et astuces.
L'Ajax (Asynchronous Javascript and XML) permet de faciliter et simplifier l'utilisation et la navigation d'un utilisateur sur un site web. Il permet le plus souvent d'apporter un vrai plus en offrant directement l'internaute des fonctionnalités supplémentaires.
Un exemple type est l'affichage automatique de suggestions au fur et à mesure de l'apparition des lettres tapées dans le champ de recherches de google (Google instant).
Google a donc créé dernièrement un tutoriel afin de permettre l'indexation du contenu ajax.
En suivant, voici le shéma dindexation, dont le contenu sera ensuite explicité et résumé.
Shéma d'indexation du contenu Ajax:
Le schéma résume le fonctionnement de l'Ajax.
Voici d'abord à quoi ressemble une URL Ajax :
www.example.com/ajax.html#!key=value
Cette URL se compose en fait de deux parties bien disctinctes : le nom de domaine et sa page(www.example.com/ajax.html) puis le hash (#key=value).
L'action réalisée lors d'un clic sur le lien envoie une requête qui récupère les éléments qui suivent le "#", lesquels s'affichent alors en Javascript sur la page.
Quels éléments mettre en place pour que google prenne en compte l'affichage javascript?
Deux actions princpiales sont à réaliser :
- Modifier le hash pour avoir non pas #key=value mais #!key=value
- Créer une page Snapshot qui ne contient pas d'ajax, mais bien les contenus.
Comment Google va interpréter le code?
En voyant le hash démarrant par un #!, Google va traduire qu'il s'agit d'une URL Ajax, et va donc chercher la page snapshot où se trouve les contenus.
Ensuite la page snapshot appellera l'url suivante : www.example.com/ajax.html?_escaped_fragment=key=value.
Lorsque vous verrez s'afficher le paramètre _escaped_fragment, alors vous saurez que le GoogleBot demande un snapshot du résultat pour l'indexer.
Il vous suffira donc de générer la page HTML complète simulant le résultat ajax pour la retourner à Google, après avoir analysé les paramètres envoyés.
Petite astuce :
Si votre page fait appel à de l'Ajax sans utiliser de hash dans l'URL, il suffit d'indiquer à Google que la page en question contient de l'Ajax au moyen d'une balise meta :
<meta name="fragment" content="!">
GoogleBot fera alors appel à l'URL www.example.com/ajax.html?_escaped_fragment. Il ne restera plus qu'à retourner votre snapshot.
Un test de vos pages snapshot, via Google Webmaster Tools, sera utile pour vérifier si GoogleBot a bien pris en compte l'opération.
Conclusion :
Pour mettre en place le système, l'opération demande un peu de temps, mais offre un avantage certain pour un meilleur référencement du contenu de vos sites.
Sources et informations complémentaires sur la page dédiée de Google


Ce qui fait que j'y comprends pas grand chose
Par exemple :
"Il vous suffira donc de générer la page HTML complète simulant le résultat ajax pour la retourner à Google, après avoir analysé les paramètres envoyés."
Admettons qu'un clique sur un lien de ma page "MesInterets.html" la remplisse a partir d'un fichier XML, listant mes films préférés ainsi qu'un résumé et une image tirée du film, voir la bande annonce.
Si j'ai bien compris, pour indexer cette page, je dois générer la page une fois le listing des films effectués (par exemple en copiant le code HTML obtenu après la requête, dans Firebug).
Mais comment dois je nommer cette nouvelle page?
Ou dois je la placer dans l'arborescence de mon site?
Comment faire comprendre aux robots, que lorsque l'utilisateur cliquera sur "films préférés", la liste de mes films préférés sera chargée, et qu'un clique sur "livres préférés" chargera le contenu de mon fichier livres.xml?
Ensuite :
"Si votre page fait appel à de l'Ajax sans utiliser de hash dans l'URL, il suffit d'indiquer à Google que la page en question contient de l'Ajax au moyen d'une balise meta"
Mais si ma page contient des liens AJAX et des liens basiques, cette balise ne risque elle pas de poser problème?