Référencement Google AJAX, AngularJS, PhantomJS

Nouveau WRInaute
J'avoue ne plus trop comprendre comment faire pour référencer (indexer) un site basé sur AngularJS.
J'ai lu que Google allait bientôt supprimer ses recommandations permettant de crawler et indexer AJAX (source)
J'ai compris que Google n'allait pas cesser de supporter cette méthode basée sur _escaped_fragment_ : vous confirmez ? mais combien de temps Google va-t-il encore gérer ça ?

En fait, j'ai cru comprendre que Google sait désormais suffisamment bien interpréter Javascript pour ne plus avoir besoin de passer par des "bidouilles" de ce genre. Pourquoi pas, mais pour ma part je ne comprends pas un truc : si on a plusieurs contenus disponibles à la même URL, comment Google fait ? Quelle URL sort dans les résultats ?

Désolé si je ne suis pas très clair et merci d'avance si vous avez des explications ou des liens vers des articles (récents) qui expliquent bien tout ça.
 
Dernière édition:
Olivier Duffez (admin)
Membre du personnel
bonnes questions, pas de réponses pour l'instant :-(
n'ayant pas la réponse, je vais chercher l'info
 
Olivier Duffez (admin)
Membre du personnel
je ne connais pas la programmation JS, donc ce n'est pas clair pour moi
prerender.io semble justement utiliser la méthode que Google va arrêter de recommander
sur le lien que tu fournis (autre topic), dois-je comprendre qu'en plus de la version AJAX, tu prévois une version HTML ?
 
Olivier Duffez (admin)
Membre du personnel
désolé, je ne comprends toujours pas bien le point suivant : j'ai l'impression que sur un site en AJAX, quand on clique sur des liens (ou des boutons) JS, le contenu change sans que l'URL ne change. Est-ce bien le cas ? Car dans ce cas, comment Google peut gérer ça ? Quelle URL sort dans les SERP ?

autre question : peux-tu clarifier (au moins pour moi) ce qu'on appelle très concrètement AJAX ? par exemple, est-ce que AngularJS est de l'AJAX ?

merci !
 
Olivier Duffez (admin)
Membre du personnel
ça m'étonne que ces questions n'intéressent pas plus de monde mais tant pis ;-) ...
peut-être que tu pourrais répondre d'une autre façon : as-tu des exemples de sites en AJAX (et/ou en AngularJS) qui sont bien faits pour être indexés par Google sans passer par la bidouille de _escaped_fragment ?
 
WRInaute accro
Non pas sous le coude, si j'en trouve je répondrais.
Par contre j'avais fait une démo de ce que j'avance: -http://spout.be/tmp/ajax-example/ et on voit bien dans les SERPs que les 3 pages sont indexées avec le query string: -https://www.google.com/search?q=site%3Ahttp%3A%2F%2Fspout.be%2Ftmp%2Fajax-example%2F
 
Nouveau WRInaute
Bonjour,

Je suis co-fondateur du service http://www.seo4ajax.com. Ce service implémente la spécification de Google en mode SaaS. Voici mes réponses aux diverses questions :

> J'ai lu que Google allait bientôt supprimer ses recommandations permettant de crawler et indexer AJAX
> Google va arrêter le crawl avec "_escaped_fragment_".
Ce n'est qu'une rumeur non-confirmée d'une seule source. Rien ne permet d'affirmer que Google abandonnera la spécification.

> En fait, j'ai cru comprendre que Google sait désormais suffisamment bien interpréter Javascript pour ne plus avoir besoin de passer par des "bidouilles" de ce genre.
C'est en effet ce que les représentants de Google annoncent. Dans les faits, le support de JavaScript reste très limité, imprévisible et mène très souvent à des contenus mal référencés (i.e. JavaScript partiellement interprété).

> Si on a plusieurs contenus disponibles à la même URL, comment Google fait ? Quelle URL sort dans les résultats ?
> j'ai l'impression que sur un site en AJAX, quand on clique sur des liens (ou des boutons) JS, le contenu change sans que l'URL ne change.
Dans ce cas, il n'y a pas de magie. Seul un contenu sera référencé. Comme l'a indiqué spout (message 6659), il faut utiliser des fragments d'URL (#!) ou l'API history.pushState afin de générer une URL par contenu unique via du code JavaScript côté client. Avec AngularJS, ceci revient à utiliser un routeur (cf. https://docs.angularjs.org/tutorial/step_07).

> as-tu des exemples de sites en AJAX (et/ou en AngularJS) qui sont bien faits pour être indexés par Google sans passer par la bidouille de _escaped_fragment ?
Oui, il en existe beaucoup mais ils reposent sur du user agent sniffing pour servir une version statique. Pour le coup, c'est une vraie bidouille. Voici 2 exemples qui ne marchent sans JavaScript que si le user agent contient "Googlebot" :
- http://www.ozy.com/
- http://scroll.in/
Notez aussi que google.com fait aussi du user-agent sniffing...
 
WRInaute accro
loubet a dit:
euh, il y a des liens en dur en html vers les 3 pages, donc cela ne démontre rien selon moi.
Oui mais la navigation se fait qd même en AJAX, c'est ce dont on parle: AJAX et indexable.
 
Nouveau WRInaute
spout a dit:
loubet a dit:
euh, il y a des liens en dur en html vers les 3 pages, donc cela ne démontre rien selon moi.
Oui mais la navigation se fait qd même en AJAX. C'est ça dont je parle.

Pour info cette technique est assez répandue et elle s'appuie sur ce qu'on appelle le PJAX, cf. http://pjax.herokuapp.com/ (cocher la case "pjax"). Dans ce cas, le site est referencable "out of the box" sans implémenter la spec de Google quand c'est bien fait.
 
WRInaute accro
Perso je penche davantage vers la solution de prévoir une alternative html à la version ajax, qui est à mon sens la solution la plus pérenne (même si parfois complexe à développer).
 
Nouveau WRInaute
Bonjour,

Mon avis n'est pas tout à fait objectif puisque je suis confronté à ce type de choix techno en ce moment.

L'indexation via escpaed_fragment fonctionne, elle est notamment utilisée par RenaultShop : https://www.google.fr/search?q=site:www.renaultshop.fr&gws_rd=ssl

Malgré cela, il me semble très hasardeux d'utiliser un SPA de type AngularJS si vous avez un enjeu SEO important sur le long terme pour plusieurs raisons :

- L'escaped_fragment ça reste une rustine et une sacré usine à gaz
- Ca reste très expérimental, une sorte de "version Alpha" (cf de nombreuses incohérences dans GWT notamment dans la gestion du robots.txt)
- Rien ne garantie que cela reste supporté pendant longtemps par Google (Google va bien supprimer ses recommandations sur l'AJAX, cela a été confirmé officiellement lors du dernier hangout)
- Lors du dernier hangout également, Google a très clairement indiqué qu'il valait mieux privilégier le HTML5 à AngularJS si cétait possible
- Aucun retour d'expérience sur l'utilisation d'escaped_fragment sur des sites à forte volumétrie de pages
- ...

Je suis assez convaincu que Google sait interpréter l'Ajax mais c'est probablement extrêmement coûteux en terme de ressources, il risque de se passer quelques années avant qu'il exécute le javascript sur toutes les pages qu'il crawl.

Si vous avez le choix, je vous conseille donc fortement de choisir autre chose ;-)
 
Nouveau WRInaute
watussi a dit:
- Ca reste très expérimental, une sorte de "version Alpha" (cf de nombreuses incohérences dans GWT notamment dans la gestion du robots.txt)
La fonctionnalité dont vous parlez, cf. http://googlewebmastercentral.blogspot.fr/2014/05/rendering-pages-with-fetch-as-google.html, est lié au support du JavaScript par les bots de Google, sans l'utilisation du paramètre _escaped_fragment_. Avec l'utilisation du paramètre _escaped_fragment_, ce problème ne se pose pas, d'autant plus que le JavaScript n'est pas interprété par le bot dans ce cas.

watussi a dit:
- Rien ne garantie que cela reste supporté pendant longtemps par Google (Google va bien supprimer ses recommandations sur l'AJAX, cela a été confirmé officiellement lors du dernier hangout)
Quand bien même la spécification disparaîtrait, rien n'empêcherait de servir les pages statiques en detectant le user-agent des bots. Beaucoup de sites le font déjà et ne sont en rien pénalisés.

watussi a dit:
- Lors du dernier hangout également, Google a très clairement indiqué qu'il valait mieux privilégier le HTML5 à AngularJS si cétait possible
Soit, mais en 2015, la distinction entre site web et application web est de moins en moins pertinente. Par exemple, l'Ajax est indispensable à des sites comme deezer, soundcloud, youtube afin de ne pas couper la lecture du flux audio pendant la navigation. Doivent-ils pour autant disparaître de Google à cause de ce besoin ? Je doute que Google se permettrait cela.

watussi a dit:
- Aucun retour d'expérience sur l'utilisation d'escaped_fragment sur des sites à forte volumétrie de pages
Qu'appelez-vous forte volumétrie ? Nous gérons des sites de quelques centaines de milliers de pages sur seo4ajax et tout fonctionne correctement.

watussi a dit:
Je suis assez convaincu que Google sait interpréter l'Ajax mais c'est probablement extrêmement coûteux en terme de ressources, il risque de se passer quelques années avant qu'il exécute le javascript sur toutes les pages qu'il crawl.
Je partage votre avis.
 
WRInaute accro
Bonjour

Il n'y a pas que l'user-agent pour identifier les bots Google ( ou autres moteurs de recherche ).

On peut utiliser le reverse de l'adresse ip.

Pour avoir ce reverse ( rapidement ), on peut utiliser ( en php ), la fonction get_dns_record().

Ceci avec les paramètres :

get_dns_record($inaddr_arpa, DNS_PTR);

La variable $inaddr_arpa, doit contenir l'adresse ip ( ou ipv6 aussi possible je crois ), à la norme inaddr_arpa.

C'est que ce que je fais pour mon site, pour les données de pronostics et stats.

- Je détecte d'abord l'adresse ip cliente,
- Si c'est un ipv4 ou ipv6,
- Calcul de $inaddr_arpa ( ipv4 ou ipv6 ),
- moulinette get_dns_record($inaddr_arpa, DNS_PTR)
- La fonction rend une array, je prend le premier élément non vide de l'array.
- Je fais un preg_match si trouvé, de l'host, sur différents patterns genre : "#google#i" ou "bing#i ( avec le suffixe du fqdn théorique ).
- Rend true si matche, false sinon.

Voilà.

( La fonction gethostbyaddr() ne supporte pas les ipv6 ).

Je présente mes scripts pour correction ( souhaitée ), si besoin est.

Respectueusement.

Jean François Ortolo
 
WRInaute accro
UsagiYojimbo a dit:
Perso je penche davantage vers la solution de prévoir une alternative html à la version ajax, qui est à mon sens la solution la plus pérenne (même si parfois complexe à développer).
Ou plus simplement sans se prendre la tête avec des trucs compliqué faire ce que spout préconise ...
Faire un site classique (ou prendre celui qui existe), y implanter des listener sur les liens internes et écrire un peu de code javascript pour produire l'effet voulu.
 
Olivier Duffez (admin)
Membre du personnel
gildas-s4a a dit:
watussi a dit:
- Rien ne garantie que cela reste supporté pendant longtemps par Google (Google va bien supprimer ses recommandations sur l'AJAX, cela a été confirmé officiellement lors du dernier hangout)
Quand bien même la spécification disparaîtrait, rien n'empêcherait de servir les pages statiques en detectant le user-agent des bots. Beaucoup de sites le font déjà et ne sont en rien pénalisés.
ça m'étonnerait que Google autorise officiellement une pratique basée sur du cloaking sur leur user-agent. Je me trompe ?

gildas-s4a a dit:
watussi a dit:
- Lors du dernier hangout également, Google a très clairement indiqué qu'il valait mieux privilégier le HTML5 à AngularJS si cétait possible
Soit, mais en 2015, la distinction entre site web et application web est de moins en moins pertinente. Par exemple, l'Ajax est indispensable à des sites comme deezer, soundcloud, youtube afin de ne pas couper la lecture du flux audio pendant la navigation. Doivent-ils pour autant disparaître de Google à cause de ce besoin ? Je doute que Google se permettrait cela.
Si AJAX ne sert qu'à ajouter une fonctionnalité pour améliorer l'expérience utilisateur, ce n'est pas bloquant pour les bots et donc pour le SEO. La génération du contenu HTML passe-t-elle par AJAX sur ces sites ?
 
Nouveau WRInaute
WebRankInfo a dit:
ça m'étonnerait que Google autorise officiellement une pratique basée sur du cloaking sur leur user-agent. Je me trompe ?
Je suis curieux de le savoir, sachant que les représentants de Google admettent eux-même le problème, cf.
https://productforums.google.com/forum/#!category-topic/webmaster-fr/crawling-indexation-et-classement/SO0DSl1HZF8

WebRankInfo a dit:
Si AJAX ne sert qu'à ajouter une fonctionnalité pour améliorer l'expérience utilisateur, ce n'est pas bloquant pour les bots et donc pour le SEO. La génération du contenu HTML passe-t-elle par AJAX sur ces sites ?
Le problème est que l'Ajax est quasiment indispensable pour ce type de site. Pour soundcloud, sans JS, on obtient une page quasiment blanche. Pour youtube ou deezer, le contenu est présent statiquement : ils font du progressive enhancement. Je pourrais citer beaucoup d'autres cas, par exemple hulu.com, beatport.com.
 
WRInaute accro
Bonjour Monsieur Wri ;)

J'ai fait celà depuis longtemps sur mon site :

Le contenu html pur et dur pour les bots.

Le contenu Ajax + html pour les autres.

Pour ce qui est de Google, j'ai lu leurs recommandations au sujet de Ajax/sites dynamiques, et Google donne des indications sur comment détecter les bots Google avec certitude :

- Détection par DNS du reverse de l'adresse ip,

- Je ne sais plus...

Si les deux urls sont les mêmes c'est un bot Google, sinon non.

Moi, je ne fais que la première vérification pas la deuxième.

Quant à l'effet théoriquement cloaking sur le référencement, je ne suis pas sûr.

Sous son ndd actuel depuis 2008, mon site fait environ 1000 vu/hour, et 1600 sessions/jour.

Précédent ndd ( ortolojf-courses.com ), depuis 2002 je crois.

En augmentation progressive.

Serais-je l'exception ? ;)

Respectueusement.

Jean François Ortolo
 
WRInaute accro
spout a dit:
Google indexe bien le JS: https://t.co/Uy5rzA4jM8 regardez la source du 1° résultat (c'est p-e cloaké ?).
Source (rendons à César...): https://twitter.com/512banque/status/584752238771511296


Bonjour Spout ;)

Dans mon cas, il ne pourrait pas le faire. ;)

Le contenu Ajax, serait chargé par les bots Google, après un léger temps d'attente, après chargement du code html de départ.

Moi, mon contenu est disponible 30 secondes, après quoi il n'est plus disponible.

Y accéder nécessite :

- Un chargement du html initial, puis du contenu Ajax, pratiquement synchrone ( l'un après l'autre ),

- Ce chargement du contenu Ajax, doit être rigoureusement fait comme le ferait un navigateur, sinon rien.

Respectueusement.

Jean François Ortolo
 
Nouveau WRInaute
spout a dit:
Google indexe bien le JS: https://t.co/Uy5rzA4jM8 regardez la source du 1° résultat (c'est p-e cloaké ?).
Source (rendons à César...): https://twitter.com/512banque/status/584752238771511296

Oui, en effet Google essaye d'interpréter le JavaScript, notamment sur les pages d'accueil, depuis très longtemps (au moins 2 ans). Jadis, il proposait même un screenshot. Maintenant, je répondrai la même chose que sur twitter : le site est-il entièrement (et fiablement) indexé ?
 
Discussions similaires
Haut