J'ai ajouté le paquet arachnéen à mon application Meteor, et la version html de la page est renvoyée lors des requêtes avec la commande ?_escaped_fragment_=
dans l'url, mais je n'arrive pas à faire en sorte que Google explore le site.
Détails
Lorsque vous utilisez Récupérer comme Google en Outils pour les webmasters de Google et demander la page racine "http://example.com/"
le retour de la page est la version javascript ; quelque chose comme :
HTTP/1.1 200 OK
content-type: text/html; charset=utf-8
date: Fri, 30 Nov 2012 05:39:36 GMT
connection: Keep-alive
transfer-encoding: chunked
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="stackoverflow.com/e83157bdc4ff057fa3a20b82af4c11b4ebe776e7.css">
<script type="text/javascript">
__meteor_runtime_config__ = {"ROOT_URL":"http://www.example.com","DEFAULT_DDP_ENDPOINT":"https://www-example-com-ddp.meteor.com/"};
</script>
<script type="text/javascript" src="/13cf3d21ce1c4a88407ca5f3c250f186ab1738f9.js"></script>
<meta name="fragment" content="!">
<title>example.com</title>
</head>
<body>
</body>
</html>
Si à la place, je demande http://example.com/?_escaped_fragment_=
la version html est retournée :
HTTP/1.1 200 OK
content-type: text/html; charset=UTF-8
date: Wed, 05 Dec 2012 02:44:09 GMT
connection: Keep-alive
transfer-encoding: chunked
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="stackoverflow.com/e83157bdc4ff057fa3a20b82af4c11b4ebe776e7.css">
<title>example.com</title>
<meta name="viewport" content="initial-scale=1.0">
</head>
<body>
<ul>
<li><a href="stackoverflow.com/">Home</a></li>
<li><a href="stackoverflow.com/one">One</a></li>
<li><a href="stackoverflow.com/two">Two</a></li>
</ul>
</body>
</html>
Questions
-
Comment dire à Google d'ajouter le
?_escaped_fragment_=
à l'url, pour qu'il rende la version html ? -
Google ajoutera-t-il toujours le
?_escaped_fragment_=
à l'url, si les urls font pas ont des hashbangs ( !# ) ? c'est-à-dire/home
,/products/1
au lieu de/!#home
,/!#products/1
? -
Comment faire pour que Google suive les pages liées ? Et ajouter le
?_escaped_fragment_=
? Toutes les versions js de la page ont<meta name="fragment" content="!">
dans l'en-tête. J'ai supposé que c'était tout ce qui était nécessaire.
Il semble que la solution la plus simple serait de mettre à jour le paquet spiderable pour qu'il renvoie la version html au Google Bot, au lieu de requérir ?_escaped_fragment_=
mais si cela fonctionne pour d'autres, je suis curieux de savoir ce que je fais de mal.
Informations complémentaires
Le paquet spiderable de Meteor est une solution temporaire pour permettre aux moteurs de recherche web d'indexer les applications Meteor.
Selon le source il fait plusieurs choses :
-
Il ajoute la balise suivante à l'élément
head
de la version js de la page :<head><meta name="fragment" content="!"></head>
-
Utilisation de PhantomJS il analyse l'application javascript et renvoie une version html lorsque l'une des conditions suivantes est remplie :
a. L'agent utilisateur demandeur est
"facebookexternalhit"
b. L'url demandée contient la chaîne de caractères
?_escaped_fragment_=