15 votes

Pourquoi les outils pour webmasters de Google ne voient pas la version statique de mon site mais le modèle de la version dynamique ?

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 :

  1. Il ajoute la balise suivante à l'élément head de la version js de la page :

    <head><meta name="fragment" content="!"></head>

  2. 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_=

6voto

Kyle Finley Points 3301

Je pense qu'il s'agit d'un bug des "Google Webmaster Tools".

Il semble que Google ait effectivement exploré le site - les pages apparaissent dans les résultats de Google. Pourtant, les outils pour webmasters de Google indiquent toujours que le nombre total de pages indexées est de 1. Bing n'explore toujours pas la page, cependant.

EDIT : Dans les outils pour webmasters de Google, les pages sont répertoriées comme suit

Non sélectionné : Les pages qui ne sont pas indexées parce qu'elles sont substantiellement similaires à d'autres pages, ou qui ont été redirigées vers une autre URL. Plus d'informations .

EDIT2 : En réponse à la question de Jonatan :

Google ajoutera-t-il toujours le ?_escaped_fragment_= à l'url, si les urls n'ont pas de hashbangs (!#) ?

Oui. Mon application n'utilise pas de hashbangs (!#) dans les urls. Et le robot Google ajoute toujours ?_escaped_fragment_= en rampant. Voici un exemple des logs :

INFO HIT /url/2/01 66.249.72.42
INFO HIT /url/2/01?_escaped_fragment_= 66.249.72.142
INFO HIT /url/2/01 108.162.222.82
INFO HIT /url/2/01?_escaped_fragment_= 108.162.222.82
INFO HIT /url/2/05 108.162.222.82
INFO HIT /url/2/05?_escaped_fragment_= 108.162.222.214

Il semble que le robot de Google essaiera l'url avec et sans l'ajout de la balise ?_escaped_fragment_=

2voto

mastazi Points 1163

Toute page qui n'a pas un fragment de hachage commençant par #! comme la maison, en a besoin :

 <meta name="fragment" content="!">

Pour notifier au crawler de récupérer l'url la plus vilaine (celle qui a été choisie). with _escaped_fragment_= ). Il est évident qu'il va dans le <head> section.

UPDATE : J'ai remarqué que selon la description du plugin donnée à la fin de votre question la meta tag ci-dessus est ajoutée, vous pouvez vérifier qu'elle est incluse dans votre page en affichant le code source.

Normalement, toutes les autres pages, sauf la maison, devraient avoir quelque chose comme www.yoursite.com/#!hashfragment dans la jolie URL, où le ! après le hash( # ) fait office de notification pour le robot d'exploration, de sorte que vous n'avez pas besoin d'inclure la balise méta mentionnée ci-dessus.

2voto

ericraio Points 704

Je sais qu'il a été répondu à cette question mais pour les personnes qui arrivent sur cette question depuis Google. Je voulais inclure ce screencast sur ce sujet.

Cela m'a aidé à comprendre le paquet spiderable de Meteor. https://www.eventedmind.com/tracks/feed-archive/meteor-the-spiderable-package

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X