web-dev-qa-db-fra.com

Servir le même contenu dans différentes langues sur la même URL

Il y a quelques questions sur ce sujet ici, mais je n'ai pas pu trouver de réponse spécifique à ma question.

Je construis donc un site Web qui ne prend actuellement en charge qu'une seule langue, mais je souhaite le rendre bilingue, ce qui signifie que chaque page sera disponible en deux langues. Chaque page aura le même contenu, seulement traduit en deux langues. Ce que je veux faire, c'est détecter la langue du navigateur dans mon script PHP et servir les différentes versions basées sur celle-ci (il y aura probablement un bouton pour changer de langue également). Cependant, avec cette approche, les deux versions de la même page partageraient une URL (par exemple, example.com/about montrerait l'une ou l'autre version de la page, en fonction de la langue du navigateur de l'utilisateur et/ou d'une session/d'un cookie). Est-ce mauvais pour le référencement? Et y a-t-il d'autres inconvénients dont je ne suis pas au courant?

Je demande ceci, étant donné la façon dont le projet est présenté, il ne serait pas si facile de rendre la deuxième version de chaque page disponible sur une URL différente (par exemple, example.com/en/about ou en.example.com/about). Si l'approche ci-dessus est non souhaitable, serait-il une alternative viable pour déterminer la langue à l'aide d'un paramètre d'URL, par exemple. example.com/about?l=en (où le script utilise par défaut ma langue locale si aucun paramètre n'est transmis)?

1
MoritzLost

Ce que je veux faire, c'est détecter la langue du navigateur dans mon script PHP et servir les différentes versions basées sur celle-ci (il y aura probablement un bouton pour changer de langue également). Cependant, avec cette approche, les deux versions de la même page partageraient une URL (par exemple, exemple.com/about montrerait l'une ou l'autre version de la page, selon la langue du navigateur de l'utilisateur et/ou une session/un cookie). Est-ce mauvais pour le référencement?

Le problème ici est que les robots d'exploration de moteur de recherche utilisent des paramètres de base et pas de cookies par défaut. Par exemple, si vous avez example.com/about et qu'il affiche le texte en anglais si un cookie et la langue du navigateur sont définis sur une certaine valeur et qu'il affiche le texte en français si rien n'est défini, les robots du moteur de recherche ne pourront dans ce cas que numériser. texte français. Cela signifie que le texte anglais ne sera jamais indexé.

Si vous voulez vraiment savoir quels paramètres les crawlers utilisent, vous pouvez utiliser un script PHP pour détecter la langue, les cookies et l'adresse IP utilisés par le moteur de recherche.

serait-ce une alternative viable pour déterminer la langue par un paramètre d'URL, par ex. example.com/about?l=fr (où le script utilise par défaut ma langue locale si aucun paramètre n'est transmis)?

Cette configuration est préférable à votre première idée, car le robot du moteur de recherche peut indexer chaque page sans configuration particulière (comme certains cookies ou la langue définie).

Ce que je suggérerais, c’est d’utiliser le module mod_rewrite si Apache est installé pour créer des URL conviviales telles que celles-ci:

http://example.com/en/about
http://example.com/fr/about
http://example.com/it/about

Voici plus d'informations sur la façon de commencer à utiliser le module:

https://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/

2
Mike