web-dev-qa-db-fra.com

Sites multilingues SEO et canoniques

Je suis en train d'améliorer le référencement dans l'un des sites multilingues de nos clients. Actuellement, le site transmet à un utilisateur le site dans la langue de son choix en recherchant un cookie de langue défini par le système lors de la dernière visite. Si le cookie n'existe pas, il recherche un en-tête "Accept-Language" dans le navigateur et recherche une langue prise en charge par le site. Si cela échoue, il utilise par défaut une langue basée sur certaines valeurs par défaut prédéfinies pour GEO-Location. Une fois que nous avons déterminé une langue, le site renvoie la page dans la langue déterminée sans modifier l'URL et avec toutes les balises méta appropriées pour cette langue. Donc, si un utilisateur hispanophone demande domain.com/venue/access/, il verra l'espagnol alors qu'un anglophone verrait l'anglais. Bien sûr, si l'utilisateur clique sur une langue, sélectionnez un lien avec une chaîne de requête comprenant lang = ?? (?? serait es, en, ect.) leur cookie sera changé à cette langue et ils obtiendront cette langue à partir de ce moment.

Le problème avec cette approche est, bien que généralement génial pour une personne, les robots ne passent pas (actuellement) un en-tête "Accept-Language" lorsqu'ils demandent une page. Cela signifie qu'un résultat affiché pour les personnes utilisant Google, Bing, etc. sera généralement dans la langue par défaut ou parfois dans une langue complètement différente en fonction du chemin emprunté par le robot pour accéder à une page et de la façon dont il a décidé de l’indexer. Cela tue notre référencement et les clics en dehors de la langue par défaut.

Nous travaillons avec deux idées sur la façon dont nous allons changer la gestion de la langue des utilisateurs.


Version 1 - Toutes les langues ont un sous-répertoire Si un utilisateur tape une URL sans répertoire de langue, nous vérifierons la langue de l'utilisateur en suivant les étapes suivantes dans l'ordre, jusqu'à ce que nous obtenions une correspondance.

  1. L'utilisateur a un cookie pour la préférence de langue.
  2. Recherchez dans les en-têtes du navigateur une langue prise en charge.
  3. Retour à une langue par défaut du site basée sur GEO-Location.

Une fois la langue déterminée, le système définira un cookie, effectuera une commande directe et ajoutera le sous-répertoire de langue à l'URL qui sera analysé par mod-rewrite et transmis en tant que paramètre de chaîne de requête.


Version 2 - Toutes les NOUVELLES langues ont un sous-répertoire La première fois qu'un utilisateur accède au site s'il clique sur une URL sans répertoire de langue, nous allons vérifier la langue de l'utilisateur en suivant les étapes suivantes dans l'ordre jusqu'à ce que nous obtenons un match.

  1. L'utilisateur a un cookie pour la préférence de langue.
  2. Recherchez dans les en-têtes du navigateur une langue prise en charge.

Si une langue prise en charge a été détectée, le système définira un cookie. Si la langue n'est pas la langue par défaut, le système effectuera une commande 301 directe et ajoutera le sous-répertoire de langue à l'URL si la langue n'est pas la langue par défaut du site qui sera analysée par mod-rewrite et transmise en tant que paramètre de chaîne de requête.


Une entrée sur la meilleure option?

Comment traiter les URL canoniques en fonction de l'option choisie? L'URL canonique doit-elle pointer sur l'URL principale sans le sous-répertoire language ou doit-elle pointer sur la version du sous-répertoire de la langue actuelle?

Le client souhaite, si possible, que les compteurs de réseau social reflètent les totaux d'une page dans toutes les langues et nous supposons que des sous-répertoires distincts pour la langue l'empêcheront, sauf si nous utilisons un canonique pour une seule URL qui probablement bousiller les crawlers et nier tout le sens des changements de langue.

Existe-t-il une solution idéale qui pourrait me manquer?

4
AWinter

Je ne connais pas les capacités du système de gestion de contenu que vous utilisez, mais voici ce que je suggérerais.

Tout d'abord, essayez d'éviter les paramètres d'URL et optez pour un schéma d'URL clair. Pour une page "Contact", ceci pourrait ressembler à ceci:

Version anglaise: http://domain.com/en/contact Version polonaise: http://domain.com/pl/kontakt

Ou:

Version anglaise: http://en.domain.com/contact Version polonaise: http://pl.domain.com/kontakt

De cette façon, l'URL est toujours facile à comprendre pour l'utilisateur. N'utilisez pas d'URL anglais pour les pages non anglaises, utilisez donc "kontakt" au lieu de "contact" pour une page polonaise. Après tout, si une URL doit être compréhensible pour un visiteur, elle doit être dans la langue qu'il a choisie.

Si vous souhaitez informer les moteurs de recherche de la langue de la page en cours, vous disposez de trois options que vous pouvez utiliser en tandem:

  1. Envoyez l'en-tête HTTP Content-Language: xx.
  2. Utilisez la section HTML META: <meta http-equiv="Content-Language" content="xx" />. Rappelez-vous que ceci est obsolète en HTML5.
  3. Utilisez l'attribut 'lang "dans l'élément HTML. <html lang="xx">

J'espère que cela t'aides!

2
wssbck