Jump to content

Référencement et redirection selon pays et langue


 Share

Recommended Posts

Bonjour,



Sur un site que je développe actuellement, on procède automatiquement à une détection du pays de l'utilisateur en fonction de son adresse IP (on a une grosse base de données faisant le lien entre des plages d'ip et les pays du monde).


En fonction de son pays, on en déduit sa langue (pour les pays ayant plusieurs langues, comme la Suisse, on choisit la langue principale du pays), et on le redirige avec un header Location vers le sous-domaine correspondant à sa langue.



Ça marche bien, mais je m'inquiète un peu pour le référencement. Si Google bot arrive sur la page d'accueil (qui par défaut est la page française, donc sous domaine français) avec un IP américaine (par exemple), il sera détecté comme pays "Etats-Unis" et redirigé vers le sous-domaine anglais.



C'est pas terrible non ? Quel serait le moyen de palier à ce problème ? Merci.


Link to comment
Share on other sites

Bonjour Ernestine,



Est-ce que la solution de contrôler le USER_AGENT ne permettrai pas de palier à ton soucis ? Si le user Agent est un bot google, bing, qwant ect ... il accède à une page générique sinon si c'est un internaute il est redirigé.



Edit : User Agent ou rang d'ip


Edited by billcom
Link to comment
Share on other sites

A partir du moment où tu fais bien un redirect (i.e. que chaque version pays/langue a une URL différente, tu ne sers pas des pages différentes avec la même URL), et que tu as bien des liens (crawlables) entre les différentes versions, ça ne devrait pas poser de problème. Il commencera par une version, et puis il ira crawler le reste. Tu peux aussi utiliser les <link> qui vont bien pour l'aider.



Note que plutôt que de choisir une langue par défaut pour les pays multi-lingues, tu pourrais/devrais te baser sur le Accept-Language (avec évidemment un fallback si la langue n'est pas supportée pour ce pays ou s'il n'y a pas de Accept-Language, comme dans le cas des bots).



Jacques.


Link to comment
Share on other sites

Billcom > Détecter le user agent ok, mais par la suite çe ne résoud pas le problème de crawlage du site par le bot car il n'y pas de lien en dur d'une version à l'autre.



jcaron > Malheureusement il n'y a pas de liens en dur d'une version à l'autre. Quand l'internaute clique sur un pays ou une langue, ça l'envoie sur un script qui le redirige en fonction de plusieurs critères, son ip, ce qu'il a en session et en cookies, etc. Enfin je vais quand même essayer de faire en sorte que les liens du langage switcher soient en dur (en passant tous les critères dans l'url au moment de la fabrication des liens), car effectivement c'est un minimum pour que les robots puissent tout crawler.



Quant à détecter le accept language, c'est ce qu'on fait, mais le client souhaite imposer la langue en fonction du pays. Par exemple si je clique sur Suisse et que mon navigateur a l'anglais comme unique langue, eh bien on lui impose quand même l'allemand (langue par défaut de la Suisse). S'il a le français par contre on lui laisse le français (en gros : on ne prend en compte la langue du navigateur que si cette langue fait partie des différentes langues parlées dans le pays choisi).



Le client a exigé tout un tas de contraintes pour soit disant simplifier la vie de l'internaute, mais ça devient complètement ingérable. Je ne sais pas ce que ça va donner, le site n'est pas encore en ligne que c'est déjà une usine à gaz sad.gif


Link to comment
Share on other sites

Quoi qu'il arrive, c'est une bonne idée, même pour l'utilisateur, que je le laisser choisir le pays. La détection de pays c'est assez fiable, mais ce n'est pas non plus du 100%. Et il y a toujours le cas du gars qui consulte le site alors qu'il est en déplacement à l'étranger mais qui veut voir le site "de chez lui".



Donc des liens entre les différentes versions c'est utile, et c'est indispensable pour les robots. Sauf peut-être si tu utilies les <link> qui vont bien, mais je suis loin d'être convaincu que ça suffise.



Ce que ton client "impose" c'est ce que je te disais de faire: tu utilises le Accept-Language s'il contient une langue valable pour le pays, sinon tu as une valeur par défaut.



Tout ça n'est que très normal et standard, rien d'ingérable là-dedans vu d'ici...



Jacques.


Link to comment
Share on other sites

Tout ça n'est que très normal et standard, rien d'ingérable là-dedans vu d'ici...

Jacques.

Ben en fait, le principe est le suivant. Nous avons défini (ou plutôt le client a défini) une trentaine de pays : France, Royaume-Uni, Allemagne, etc, qui ne sont pas des pays officiels, puisque parmi cette liste se trouvent des "pays" tels que : "Scandinavie", "Amérique du Sud", etc..., sans oublier l'inévitable "Autre pays".

Ces "pays" sont regroupés en 9 secteurs commerciaux : Europe de l'Ouest, Europe de l'Est, etc...

Pour chaque pseudo-pays sont définis les différentes langues parlées dans ce pays, avec pour chacun une langue par défaut.

Jusque là tout va bien, le problème, c'est que le contenu de chaque page diffère en fonction du secteur commercial. Admettons que je sois aux Etats-Unis et que je sois sur la page /products : cette page présentera les produits disponibles pour le secteur Amérique du Nord. Mais cette même page /products (même url), pour quelqu'un qui serait en Australie, par exemple, présenterait les produits disponibles dans le secteur Océanie. Donc une seule url pour deux contenus différents. C'est cela qui me paraît très mauvais pour le référencement.

Par ailleurs si je suis sur la page en.monsite.com/products (page "products" sur le sous-domaine "en") et que je clique sur le pays "Belgique", comment puis-je faire un lien en dur ? Au moment de construire le lien, il faudrait savoir vers quel sous-domaine pointer (pour la Belgique, où les gens parlent français ou néerlandais, ce serait soit fr.monsite.com soit nl.monsite.com) en fonction de la langue du navigateur (français ou néerlandais ou ni l'un ni l'autre), et vers la bonne traduction de la page. Ça c'est faisable, mais alors au moment du clic, il faut que je stocke en session le pays choisi, puisque cette variable m'est indispensable pour afficher le contenu ultérieurement, et qu'elle n'est pas transmise dans l'url (dans l'url je ne peux avoir que la langue). Il y a donc une opération à effectuer au moment du switchage de pays, et c'est pourquoi j'ai ce script de redirection, et donc pas de liens en dur d'un pays à l'autre. La meilleure solution serait de passer le pays en variable dans l'url, mais le CMS utilisé (eZPublish) ne permet pas de récupérer des variables en GET sur les pages de contenus standard (vues full de noeuds).

En fait le site a juste été trop mal conçu dès le début, il faudrait tout recommencer, après trois mois de boulot. Quand on a commencé, il n'était pas encore question de secteurs commerciaux, ce problème s'est greffé au fur et à mesure, et là on arrive à une impasse. Mais bon d'un autre côté, le contrat ne prévoyait rien au niveau du référencement, donc je pense que je vais tout laisser en l'état, ce sera l'horreur pour l'indexation mais tant pis.

En touts cas merci pour vos réponses smile.gif

Link to comment
Share on other sites

En effet, comme je le disais plus haut, l'important c'est que tu aies une URL pour une version du contenu, pas une URL qui sert du contenu différent suivant les circonstances.



Il y a plein de choix possibles sur la structure de l'URL. Dans le chemin (www.example.com/AU-en/products), dans le sous-domaine (de.ch.example.com/products), dans une combinaison de domaine et sous-domaine (de.example.ch/products), dans une combinaison de domaine et de chemin (www.example.ch/de/products), etc.



Les variations qui utilisent des ccTLDs ont l'avantage que Google devine tout de suite pour quel pays c'est, et que ça met les utilisateurs en confiance. L'inconvénient c'est que certains domaines sont difficiles à obtenir quand on n'est pas établi sur place, que certains coûtent cher, que si ont fait du TLS ça coûte plus cher en certificats, et que ça complique le passage de cookies/sessions. Dans ton cas, ça a aussi l'inconvénient que quand il y a des "régions" plutôt que des pays, c'est plus difficile de faire un mapping exact (mais si tu affiches des prix, il est souvent nécessaire d'avoir une version par pays de toutes façons).



La version www.example.com/CC-lang/ a l'avantage d'être la plus simple à mettre en oeuvre. Quand l'utilisateur arrive sur une page sans le CC-lang (normalement uniquement la home), tu fais la détection, et tu l'envoies sur la home qui va bien.



Normalement toutes les autres pages indexées vont correspondre directement au bon pays et à la bonne langue. Si l'utilisateur arrive (depuis un moteur, un lien externe...) sur une bonne qui ne correspond pas à ce qui est détecté, tu peux lui présenter le choix d'aller sur la "bonne" page, ou de rester là où il est (et dans ce dernier cas tu mets un cookie ou un flag de session). En dehors de ça, tu n'utilises jamais un cookie ou une session pour décider du contenu affiché (à part les parties réellement dynamiques genre connexion à son compte, panier, etc. évidemment).



Pour changer de pays ou de langue, il suffit donc de construire la bonne URL. Là encore, le cas example.com/CC-lang/ est le plus facile, mais les autres cas se gèrent aussi sans trop de problème.



Jacques.


Link to comment
Share on other sites

Salut

Une supposition : je vais en vacances en Chine. Je ne parle pas la langue locale mais je communique en anglais avec les autochtones.

Je visite ton site depuis l'ordinateur de mon hôtel.

Pays : Chine. Accept-language : chinois.

Autre exemple ?

Je suis chez moi en France, en bon français que je suis. Mais mon ordinateur est configuré en anglais, en bon geek que je suis.

Pays : France. Accept-Language : anglais.

Tu me l'affiches en quelle langue ? Si c'est en anglais alors qu'une version française était disponible, je vais trouver ça étrange.

Bref, on pourrait continuer 2 heures à donner des exemples. "never trust user inputs" mais ne pas faire confiance non plus à une IP, un en-tête, une version de navigateur, une géolocalisation, etc.

Link to comment
Share on other sites

  • 2 weeks later...

La détection du pays ou du user agent c'est le mal absolu en référencement multilingue.



La bonne pratique consiste à déterminer une langue parent, qui sera affichée sur la page d'accueil. Ensuite, des drapeaux ou autres systèmes seront mis à disposition pour que l'utilisateur choisisse une autre langue enfant, s'il le souhaite.


Aucune technique ne va diriger automatiquement dans une langue ou une autre.



Un très bon Whiteboard Friday de Rand (SEOmoz) sur le sujet http://www.seomoz.org/blog/international-seo-where-to-host-and-how-to-target-whiteboard-friday


Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...