AngularJS comme à peu près tous les Frameworks javascript MVC modiifie la structure de contenu de votre rendu html qui devient alors souvent incompatible avec l'indexation dans les moteurs de recherche. Heureusemet, AngularJS permet de contourner le problème et de pouvoir faire du SEO en utilisant un routage d'URL et un 'headless brower' qui récupère le code html pour vous.
Comment Google et Bing indexe l'Ajax
La première question à se poser et de comprendre comment Google et Bing peuvent indexer de l'Ajax.
Et bien, ils proposent tous les 2 un support pour les URLs Hashbang. Celles ci sont utilisées pour informer le moteur de recherche que la page web qui est en train d'être consultée à l'adresse (Hashbang) donnée est composée de contenu Ajax.
Exemple d'URL : monsite.fr/#!/une/page-avec/du-contenu
Le moteur va, de ce fait, convertir cette URL vers une autre URL qui elle sera accessible et rendra le contenu disponible. Google indexe donc cette URL générée et espère y trouver le même contenu que sur l'application Ajax. Rappelons que proposer un contenu différents à ces deux URLs reviendrait à faire du cloaking!
Exemple de la nouvelle url générée : monsite.fr/une/page-avec/du-contenu
Le principal travail est donc de fournir sur cette URL le contenu que Google s'attend à voir sans utiliser JS. Il faut donc acheminer le HTML prégénéré de la page Web.
Ok mais avec AngularJS ?
Et comment faire cela avec du AngularJS ? Et bien, AngularJs est conçu pour le côté client, vous devrez donc configurer votre serveur web pour qu'il rassemble le 'headless HTML Browser' et le rende accessible sur la page web. Ainsi cela génèrera le code HTML pour que le Hashbang soit directement inclu dans l'URL spéciale SEO.
Pour gérer le Hashbang, il vous faudra utiliser un _escaped_fragment_ dans votre config serveur (ou .htaccess), par ailleurs il ne faudra pas oublier d'utiliser la balise meta fragment pour bien indiquer aux moteurs qu'il s'agit d'un fragment de page générée par l'Ajax.
Pour info, nous vous conseillons d'utiliser http://phantomjs.org/
A vos claviers !