701 votes

Comment les moteurs de recherche traitent des applications de AngularJS ?

Je vois deux problèmes avec AngularJS application sur les moteurs de recherche et RÉFÉRENCEMENT:

1) Ce qui se passe avec les balises personnalisées? Les moteurs de recherche à ignorer tout le contenu à l'intérieur de ces balises? c'est à dire supposons que j'ai

<custom>
  <h1>Hey, this title is important</h1>
</custom>

serait - <h1> être indexés en dépit d'être à l'intérieur de balises personnalisées?


2) Est-il un moyen d'éviter les moteurs de recherche d'indexer {{}} lie à la lettre? c'est à dire

<h2>{{title}}</h2>

Je sais que je pourrais faire quelque chose comme

<h2 ng-bind="title"></h2>

mais si je veux laisser le robot "voir" le titre? Est rendu côté serveur la seule solution?

471voto

superluminary Points 5496

Utilisation PushState

Le courant (2014) façon de le faire est d'utiliser le JavaScript pushState méthode.

PushState modifie l'URL en haut de la barre de navigation sans avoir à recharger la page. Disons que vous avez une page contenant des onglets. Les onglets de masquer et d'afficher le contenu, et le contenu est inséré dynamiquement, soit à l'aide d'AJAX, ou tout simplement en paramètre display:none et display:block pour masquer et afficher le bon contenu de l'onglet.

Lorsque les pattes sont cliqués, utilisez pushState de mettre à jour l'url dans la barre d'adresse. Lorsque la page est affichée, utilisez la valeur dans la barre d'adresse afin de déterminer l'onglet afficher. Angulaire de routage va le faire automatiquement pour vous.

Les Moteurs de recherche peuvent lire et exécuter le code JavaScript

Google a été en mesure d'analyser le JavaScript, pour un certain temps maintenant, c'est pourquoi ils ont développé à l'origine Chrome, pour agir comme un complet navigateur sans le Google araignée. Si en cliquant sur un lien déclenche un pushState appel, la nouvelle URL peuvent être indexées. Il n'y a plus rien à faire.

Moteur de recherche de Soutien pour PushState Url

PushState est actuellement pris en charge par Google et Bing.

N'utilisez pas de HashBangs #!

Hashbang les url ont été une vilaine pis-aller obligation pour le promoteur de fournir un pré-rendu du site, à un endroit particulier. Ils ont encore du travail, mais vous n'avez pas besoin de les utiliser.

Google

Voici Matt Cutts répond à Paul Irish question sur PushState pour le RÉFÉRENCEMENT:

http://youtu.be/yiAF9VdvRPw

Voici Google annonce la pleine prise en charge de JavaScript pour l'araignée:

http://googlewebmastercentral.blogspot.de/2014/05/understanding-web-pages-better.html

Le résultat est que Google prend en charge les PushState et index PushState Url.

Voir aussi Google webmaster tools comme Googlebot disponible. Vous verrez que votre JavaScript (y compris Angulaire) est exécutée.

Bing

Voici Bing annonce son soutien pour la jolie PushState Url daté de Mars 2013:

http://blogs.bing.com/webmaster/2013/03/21/search-engine-optimization-best-practices-for-ajax-urls/

Test de votre site

Google Webmaster tools contient maintenant un outil qui vous permettra de récupérer une URL que google, et de rendu JavaScript, Google rend-elle.

https://www.google.com/webmasters/tools/googlebot-fetch

Générer pushstate Url Angulaire

À produire de véritables Url Angulaire, plutôt que # préfixe, définissez mode HTML5 sur votre $locationProvider objet.

$locationProvider.html5Mode(true);

Côté Serveur

Puisque vous êtes réel en utilisant des Url, vous devrez vous assurer que le même modèle est livré par votre serveur pour l'ensemble des Url valides. Comment vous faites cela va varier en fonction de l'architecture de votre serveur.

Sitemap

Votre application peut utiliser des formes inhabituelles de navigation, par exemple hover ou de défilement. Pour s'assurer que Google est en mesure de conduire votre application, je serais probablement suggérer la création d'un sitemap, une simple liste de toutes les url de votre application répond. Vous pouvez placer ce à l'emplacement par défaut (/plan du site ou de l' /sitemap.xml), ou indiquer à Google à l'aide des outils pour les webmasters.

C'est une bonne idée d'avoir un sitemap de toute façon.

Une page de démonstration

Le contenu suivant est rendu à l'aide d'un pushstate URL:

http://html5.gingerhost.com/london

Comme peut être vérifiée, à ce lien, le contenu est indexé et apparaît dans Google.

407voto

joakimbl Points 9081

Si vous souhaitez optimiser votre application pour les moteurs de recherche, il y a malheureusement aucun moyen de contourner servant une pré-version rendue pour le robot. Vous pouvez en lire plus à propos de Google recommandations pour l'ajax et javascript lourds-sites ici.

Si c'est une option que je vous recommande la lecture de cet article sur la façon de faire SEO Angulaire avec rendu côté serveur.

Je ne suis pas sûr de ce que le robot lorsqu'il rencontre des étiquettes personnalisées.

Mise À Jour Mai 2014

Les crawlers de Google s'exécute maintenant javascript - vous pouvez utiliser les Outils Google pour les Webmasters afin de mieux comprendre comment vos sites sont fournis par Google.

108voto

auser Points 1126

Let's get définitif sur AngularJS et SEO

Google, Yahoo, Bing et autres moteurs de recherche explorent le web, de manière traditionnelle à l'aide de robots traditionnels. Ils exécutent des robots qui analysent le code HTML des pages web, la collecte d'informations le long de la voie. Ils gardent des mots intéressants et chercher d'autres liens vers d'autres pages (ces liens, le montant et le nombre d'entre eux entrent en jeu avec SEO).

Alors pourquoi ne pas les moteurs de recherche traitent de javascript sites?

La réponse a à voir avec le fait que les robots de moteur de recherche travail par headless navigateurs et le plus souvent ils ne pas avoir un moteur de rendu javascript pour rendre le javascript d'une page. Cela fonctionne pour la plupart des pages comme la plupart des pages statiques ne se soucient pas de JavaScript rendu leur page, leur contenu est déjà disponible.

Ce qui peut être fait à ce sujet?

Heureusement, les robots d'indexation des plus grands sites ont commencé à mettre en œuvre un mécanisme qui nous permet de faire notre JavaScript sites crawlable, mais il nous oblige à mettre en œuvre un changement à notre site.

Si nous changeons notre hashPrefix être #! au lieu de simplement #, puis moderne de moteurs de recherche vont modifier la demande d'utilisation d' _escaped_fragment_ au lieu de #!. (Avec mode HTML5, c'est à dire là où nous avons des liens sans le hachage préfixe, nous pouvons mettre en œuvre cette même fonction en regardant l' User Agent - tête dans notre backend).

C'est-à-dire, au lieu d'une requête à partir d'un navigateur qui ressemble à ceci:

http://www.ng-newsletter.com/#!/signup/page

Un moteur de recherche, de recherche la page:

http://www.ng-newsletter.com/?_escaped_fragment_=/signup/page

Nous pouvons définir la valeur de hachage préfixe de notre Angulaire des applications à l'aide d'une méthode intégrée d' ngRoute:

angular.module('myApp', [])
.config(['$location', function($location) {
  $location.hashPrefix('!');
}]);

Et, si nous utilisons html5Mode, nous aurons besoin pour mettre en œuvre cette utilisation de la balise meta:

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

Rappel, nous pouvons définir l' html5Mode() avec l' $location service:

angular.module('myApp', [])
.config(['$location', 
function($location) {
  $location.html5Mode(true);
}]);

La manipulation du moteur de recherche

Nous avons beaucoup de possibilités pour déterminer comment nous allons faire face à de fournir le contenu pour les moteurs de recherche que la page HTML statique. Nous pouvons accueillir un backend nous-mêmes, nous pouvons utiliser un service d'accueil d'un back-end pour nous, nous pouvons utiliser un proxy pour livrer le contenu, etc. Regardons quelques options:

Auto-hébergé

Nous pouvons écrire un service pour gérer les traitant par l'exploration de notre propre site à l'aide d'un navigateur sans, comme phantomjs ou zombiejs, en prenant un instantané de la page avec un rendu des données et de les stocker au format HTML. Chaque fois que nous voyons la chaîne de requête, ?_escaped_fragment_ dans une requête de recherche, nous pouvons livrer le HTML statique instantané, nous avons pris de la page au lieu de la pré-rendu de la page uniquement via JS. Cela nous oblige à avoir un backend qui livre nos pages avec la logique conditionnelle dans le milieu. Nous pouvons utiliser quelque chose comme pré-rendu.io backend comme un point de départ pour exécuter nous-mêmes. Bien sûr, nous avons encore besoin de gérer l'utilisation de proxy et de l'extrait de la manipulation, mais c'est un bon début.

Avec un service payant

La méthode la plus simple et la plus rapide façon d'obtenir le contenu dans le moteur de recherche est d'utiliser un service de Brombone, seo.js, seo4ajax, et pré-rendu.io sont de bons exemples de ce que sera l'hôte de la au-dessus de rendu de contenu pour vous. C'est une bonne option pour les jours où nous ne voulons pas traiter avec l'exécution d'un serveur/proxy. Aussi, il est généralement très rapide.

Pour plus d'informations sur Angulaire et le RÉFÉRENCEMENT, nous avons écrit un tutoriel complet sur le http://www.ng-newsletter.com/posts/serious-angular-seo.html et nous l'avons détaillé, il est encore plus dans notre livre ng-livre: Le Livre Complet sur AngularJS. Consultez-le à l' ng-book.com.

58voto

Brad Green Points 1046

Vous devriez vraiment vérifier le tutoriel sur la construction d’un site SEO-friendly AngularJS sur l’année de blog de moo. Il vous guide à travers toutes les étapes décrites à la documentation du moment cinétique. http://www.yearofmoo.com/2012/11/angularjs-and-SEO.html

En utilisant cette technique, le moteur de recherche voit le HTML élargi au lieu des balises personnalisées.

42voto

user3330270 Points 267

Cela a radicalement changé.

http://searchengineland.com/bing-offers-recommendations-for-seo-friendly-ajax-suggests-html5-pushstate-152946

Si vous utilisez: $ locationProvider.html5Mode (true); tu es prêt.

Plus de pages de rendu.

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