web-dev-qa-db-fra.com

Google et 301/302

nous devons résoudre un problème car Google n'indexe pas correctement nos sites multilingues. Nous redéfinirons nos URL ultérieurement, mais nous avons besoin d'un moyen d'aider Google à trouver les différentes versions linguistiques, tout en préservant la commodité des utilisateurs, notamment ceux qui utilisent des liens existants.

Je vais d’abord expliquer un peu notre structure de site/url:

Supposons que nous utilisions le domaine foo.com. Notre application détectera alors la langue du navigateur et affichera la version anglaise ou allemande de la page. L'utilisateur peut ensuite changer de langue en cliquant sur un lien qui entraîne l'ajout du paramètre de requête language=xx.

La langue actuellement sélectionnée est stockée dans la session. Ainsi, si l'utilisateur ne change pas la langue, chaque page sera affichée dans la langue sélectionnée en dernier.

Voici un court exemple pour un utilisateur avec la langue du navigateur DE:

foo.com -> foo.com/bar -> foo.com/bar?language=en -> foo.com
(German)   (German)       (English)                  (English now)

Si la langue du navigateur n'est pas prise en charge ou fournie, nous supposons que l'anglais est utilisé par défaut.

Donc maintenant, GoogleBot aura des problèmes avec ceci, puisque foo.com pourrait renvoyer du contenu anglais ou allemand. Initialement, GoogleBot devrait obtenir la version anglaise, mais si le lien de changement de langue est suivi (ou si le TLD allemand est utilisé, puisque foo.de redirige vers foo.com?language=de), la version allemande sera livrée).

Un autre problème est que nos liens internes aux pages ne portent pas le paramètre de langue. Bien que nous puissions changer cela (avec quelques efforts dans certains cas), ces liens (sans paramètre) sont déjà présents sur des sites allemands externes et doivent donc être pris en charge d'une manière ou d'une autre.

Pour surmonter cela, nous avons pensé à la stratégie de redirection suivante:

foo.com -> no session yet: detect browser language
                           -> if DE, then 302 to foo.com?language=de
                           -> if EN, then deliver the english content
        -> we have session, so get the language from the session
                           -> if DE, then 302 to foo.com?language=de
                           -> if EN, then deliver the english content

foo.com/bar -> the same as foo.com

foo.de -> 301 to foo.com?language=de

Chaque page aurait alors en plus le jeu de relations alternate, par ex.

<link rel="alternate" hreflang="en" href="http://foo.com" />
<link rel="alternate" hreflang="de" href="http://foo.com?language=de" />

Donc, de notre point de vue, ce qui suit devrait se produire:

  • L'utilisateur ouvre foo.com et obtient soit la version anglaise, soit est redirigé vers la version correspondant à la langue du navigateur (si pris en charge).
  • L'utilisateur clique sur foo.com/bar et en fonction de la langue de la session (ou de la langue du navigateur si l'URL est ouverte directement), la version anglaise est livrée ou il est redirigé vers foo.com/bar?language=xx.
  • GoogleBot explore foo.com et comme aucune langue n'est fournie, il voit la version anglaise, même en suivant les liens internes

La vraie question est la suivante:

À notre connaissance, rien ne garantit que GoogleBot utilise un identifiant de session ou ne l'utilise pas. Par conséquent, nous ne savons pas si une session a été réutilisée lors de l'analyse.

Il y a donc deux possibilités:

  • Si GoogleBot utilise une session, il peut obtenir un contenu en anglais ou une redirection 302 pour toute URL ne disposant pas du paramètre de langue (par exemple, foo.com/bar). Comment Google va-t-il gérer cela?

  • Si GoogleBot n'utilise pas de session, il obtiendrait la version allemande de foo.de, en raison de la redirection. S'il suit ensuite un lien interne vers foo.com/bar, il devrait obtenir le contenu en anglais, car aucune langue n'est fournie et une nouvelle session est créée. Dans ce cas, GoogleBot stockera-t-il le lien alternatif foo.com/bar?language=de pour la version allemande?

Merci jusqu'à présent à tous ceux qui ont supporté de lire tout cela et encore plus à tous ceux qui ont une réponse à partager.

Veuillez noter que nous travaillons sur la refonte de nos URL afin de toujours avoir la langue dans le chemin (par exemple, foo.com/en/bar), mais cela prendra un certain temps et nous devons également gérer les liens existants sans la langue. Donc, s'il vous plaît, ne proposez pas simplement de restructurer les URL.

Edit:

En réponse à votre demande, voici le problème initial que nous essayons de résoudre.

Nos clients utilisent généralement leur domaine .com et souhaitent que les pages de résultats affichent une description en allemand lors de l'utilisation de google.de et une description en anglais dans les autres cas.

Cependant, les résultats sont toujours affichés en anglais.

Notre approche actuelle (apparemment insuffisante) est la suivante:

foo.com -> page in english or german, depending on the request language (and currently on the session as well)
             -> alternate link with hreflang=en : foo.com?language=en
             -> alternate link with hreflang=de : foo.com?language=de    

Nous avons supposé que Google pourrait utiliser les versions dans d'autres langues et afficher la version la mieux adaptée dans une page de résultats localisée.

Cependant, cela n’a pas encore si bien fonctionné et nous supposons que la raison en est que foo.com n’est en soi pas un autre lien. Nous avons donc pensé laisser le paramètre de langue en dehors de la version anglaise (voir la question ci-dessus) et utiliser foo.com comme lien alternatif pour hreflang = en.

Nous ne sommes cependant pas des experts en référencement, alors cela pourrait être faux. Si tel est le cas, corrigez-moi avec quelques astuces ou explications. :)

Avec cette piste de bien, nous sommes arrivés au point où foo.com devrait représenter la version anglaise de la page uniquement. Cependant, si nous changeons cela, tous les utilisateurs allemands (environ 50% des visiteurs) verront d’abord la page anglaise, à cause des nombreux liens qui ne contiennent aucun paramètre de langue. Et c’est quelque chose que notre client ne veut clairement pas.

Cela nous a de nouveau conduit à l'approche utilisant des redirections vers foo.com?language=xx et un calcul de xx à partir de la langue du navigateur (et de la session également, si elle contient des informations sur la langue).

2
Thomas

Googlebot peut rencontrer des problèmes lors de l'utilisation de cookies d'identification de session. Vous ne devez donc pas vous en fier. Vous avez besoin de pages distinctes pour chaque langue et je vous recommande de passer au format foo.com/en/bar, mais si vous devez utiliser la chaîne de requête, puis ajoutez du code pour le modifier. chaque ancre <a> balise sur la page pour inclure dynamiquement le paramètre de langage en fonction de la présence de la chaîne de requête existante.

Une autre chose que vous pouvez faire est de générer un sitemap.xml contenant les deux langues et de le soumettre à Google Webmaster Tools pour qu’il soit exploré. En d'autres termes, une carte de site avec à la fois foo.com/bar?language=de et foo.com/bar?language=en urls. Exemple:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
      <loc>http://www.example.com/</loc>
   </url>
   <url>
      <loc>http://www.example.com/?language=de</loc>
   </url>
   <url>
      <loc>http://www.example.com/about-us</loc>
   </url>
   <url>
      <loc>http://www.example.com/about-us?language=de</loc>
   </url>
</urlset>

Ensuite, dans , l'écran Configuration des paramètres d'URL de Google ajoute (ou modifie) ce paramètre de langue pour indiquer à Google qu'il (1) changes page content et (2) son incidence. est-ce que c'est Translates.

Si des fonctionnalités telles que JavaScript, les cookies, les identifiants de session, les cadres, DHTML ou Macromedia Flash vous empêchent de voir l'intégralité de votre site dans un navigateur, les araignées peuvent avoir des difficultés à l'explorer. http://support.google.com/webmasters/bin/answer.py?hl=fr&answer=40349

voir aussi https://stackoverflow.com/questions/7958971/does-google-bot-keep-session-when-crawling-asp-net

Pour autant que nous sachions, rien ne garantit que GoogleBot utilise un identifiant de session ou ne l'utilise pas. Par conséquent, nous ne savons pas si une session a été réutilisée lors de l'analyse.

Correct, aucune session n'est en cours de sauvegarde ou de sauvegarde au fur et à mesure de son exploration, et le site n'est pas analysé en une seule séance. Il va s'arrêter et commencer à ses propres loisirs. Arrête en fonction de la session.

En ce qui concerne votre stratégie de redirection visant à lutter contre les liens existants dans la nature, elle aidera ceux qui ont lié les pages de version DE sans le paramètre language. Google suivra correctement les redirections 302, mais il s’agit de redirections temporaires et . Les liens ne seront pas correctement reliés à la langue appropriée et seront probablement toujours sur la version anglaise. .

À propos des 302:

La redirection 302 n'aurait pas pour effet d'indexer Google les nouvelles URL auxquelles vous redirigez. Google le voit comme temporaire et indexera le lien d'origine. Si vous souhaitez réparer le jus de liaison, vous devez disposer de 301. Voici une infographie pratique http://www.seomoz.org/blog/an-seos-guide-to-http-status-codes

D'après un article de blog de Matt Cutts sur les redirections 302 en 2006 (je sais que cela fait longtemps, mais je pense que le conseil est toujours valable.):

un domaine 302 ne devrait pas nuire à un site, mais si vous avez tout déplacé définitivement vers un nouvel emplacement, j'essaierais plutôt d'utiliser une redirection 301 (permanente).

4
Anthony Hatzopoulos

C'est un problème assez difficile du point de vue du référencement et je ne suis pas sûr qu'il existe un moyen purement SEO de le gérer sous sa forme actuelle.

De la manière dont vous gérez les choses, je ne pense pas que Google puisse afficher les résultats Germain. Google ne montrera les résultats en allemand que si leur contenu est allemand, comme vous l'avez découvert (d'après ce que vous avez décrit ci-dessus). Googlebot isn ' t garder l’identifiant de session et donc ne pas indexer le contenu allemand.

Ce que vous devez faire pour que cela fonctionne avec la même URL pour les deux versions, est de charger les deux versions du contenu pour tout le monde et d'utiliser soit JavaScript, soit l'affichage CSS pour ne pas masquer la version que vous ne voulez pas utiliser. utilisateur à voir.

Cela a plusieurs problèmes avec cela:

  1. Google n'aime pas que vous masquiez le contenu aux utilisateurs. Dans ce cas, vous affichez le même contenu pour tout le monde (Googlebot et les autres personnes). Il n'est donc pas techniquement dissimulé, mais placé dans une zone grise, ce qui comporte des risques.

  2. Vous devrez laisser les balises de titre et les méta descriptions vides. Les balises de titre sont presque toujours utilisées par Google (bien qu'ils se réservent le droit d'utiliser ce qu'ils veulent, ils le font rarement), donc si vous écrivez un titre anglais, vous obtiendrez un titre anglais pour les mots clés allemands. Le titre est un facteur assez important sur la page. Ne pas en avoir un nuira à votre capacité de classement pour les mots clés anglais et allemands.

  3. Cela dépend de Google pour choisir le bon contenu. Étant donné que les deux versions sont montrées à Google et que vous n'avez donné aucune autre indication concernant les titres et les méta-descriptions, vous comptez entièrement sur Google pour sélectionner le bon contenu à afficher dans chaque cas. Alors que Google est généralement bon dans ce domaine, vous pouvez être sûr qu'il y au moins quelques instances qui ne rendent pas dans les SERP comme vous le souhaitez. (J'essaie toujours de mon mieux pour m'assurer que Google ne doit rien deviner).

La meilleure option serait de restructurer les URL afin que chaque version se trouve sur sa propre URL, puis d'exécuter une campagne manuelle de "récupération de lien" pour obtenir tous ces liens dans la nature afin de les mettre à jour vers les nouvelles URL. Mais si vous cherchez quelque chose dans l'intervalle, je dirais ceci ou une variante de celui-ci est votre meilleur pari. Le plan que vous avez présenté ci-dessus devrait aboutir à l'indexation de la version anglaise et à son affichage dans les SERP, même pour les expressions allemandes (c'est-à-dire que les résultats obtenus ne changent pas). En espérant que ça aide, bonne chance.

1
Joshak