Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Réflexions informatiques

Choisir une URL pour un site multilingue

12/08/2021

Lors de la création d'un site Internet en plusieurs langues, la question sur la façon de spécifier la langue dans l'URL se pose à un moment donné. Pour la version du site en français, le choix sera donc bien souvent à faire entre :

  • https://monsite.fr : utilisation du domaine de premier niveau
  • https://monsite.com/fr : utilisation du chemin d'accès
  • https://fr.monsite.com : utilisation du sous-domaine

Je vais passer en revue ces possibilités (sachant qu'il y en a d'autres mais celles-ci sont pour moi les plus représentatives) pour présenter ce qu'elles impliquent comme points intéressants et comme points de vigilance, afin de vous aiguiller dans vos choix techniques pour un site multi-langues.

1. La langue en tant que domaine de 1er niveau (TLD)

Il s'agit ici d'une URL de type https://monsite.fr ("fr" est le TLD, c'est-à-dire le domaine de premier niveau, le Top Level Domain).

Points intéressants

  • En utilisant le TLD pour spécifier la langue, le site sera véritablement vu par les moteurs de recherche comme un site Internet à part entière, et non une déclinaison d'un site existant, puisqu'il s'agit d'une adresse différente. Cela peut favoriser le référencement, un peu à la manière des marques qui créent plusieurs entités pour un même produit.
  • Vous pouvez rediriger chaque nom de domaine vers un serveur physique rapidement. Ce serveur pourra ainsi être adapté (en mémoire, en performances et capacité des disques...) selon les usages du site Internet. Vous pourrez aussi déployer une mise à jour du site ou l'arrêter sans impacter les autres versions du site.

Points de vigilance

  • Il faudra réserver chaque nom de domaine, et donc payer, avec des variations de montants possibles selon les extensions, et éventuellement une indisponibilité du nom de domaine selon le TLD. Il faudra également un certificat SSL (pour https) sur chaque nom de domaine, et donc payer (à moins de passer par une solution gratuite comme Let's Encrypt).
  • Au niveau référencement, un moteur de recherche peut privilégier le TLD faisant référence au pays de l'utilisateur pour proposer en premier les sites les plus proches géographiquement. Pour un suisse, un site en ".fr" pourrait donc peser moins lourd qu'un site en ".ch".
  • Également au niveau référencement, comme chaque version du site est vue comme indépendante des autres, il faudra travailler le référencement de chaque version.
  • Comme le TLD représente un pays et non une langue, il faut bien réfléchir au positionnement visé. Pour un site français, prendre https://monsite.fr semble se justifier si on se dit que fr=français, mais pour l'anglais, faut-il prendre ".us" ou ".en" ? A moins de créer un site représentant un pays, pour une marque par exemple, je pense qu'il faut éviter d'utiliser le TLD comme discriminant.

2. La langue dans le chemin d'accès

Il s'agit ici d'une URL de type https://monsite.com/fr ("fr" est le chemin d'accès).

Points intéressants

  • Il n'y a pas de surcoût en réservation de noms de domaines et en certificats : vous n'utilisez qu'un seul nom de domaine et qu'un seul certificat pour toutes les langues à gérer.
  • Cette solution est en apparence rapide à mettre en place car le chemin d'accès est plus souple à manipuler qu'un nom de domaine (tout dépend évidemment du système de gestion de contenu que vous utilisez).
  • Vous pouvez choisir d'utiliser le terme que vous voulez pour distinguer les langues : "fr", "fre", "french", "francais"...

Points de vigilance

  • Il est préférable d'utiliser ici un TLD international (comme ".com", ".org"...). Si le site a comme TLD un ".fr", on aura un site français avec l'URL https://monsite.fr/fr. Cela peut faire bizarre mais ne gêne pas le fonctionnement.
  • L'ensemble des versions du site sera supporté par un seul serveur (à moins de passer par du Load Balancing).
  • Les liens sur le site doivent commencer par "/fr/" ou "/en/", afin de conserver l'information de la langue utilisée. Tous les types de pages comme les articles, les listes d'articles, les recherches, les appels Ajax, les comptes devront gérer cette syntaxe. Cela alourdit donc le routage des liens car ils incluent à chaque fois les différentes langues possibles. Si vous faites de la réécriture d'URL (rewriting) et selon le nombre de liens différents disponibles, cela peut ajouter de la complexité en réalisation et en maintenance.
  • Vous devez rediriger la page d'accueil pour être dans la langue de l'internaute. Voici une méthode à mettre dans le fichier .htaccess pour récupérer la langue de l'utilisateur et rediriger vers la bonne page d'accueil :
    # Redirige selon page d'accueil et la langue de l'internaute
    RewriteCond %{HTTP:Accept-Language} ^fr [NC]
    RewriteRule ^$ /fr/ [L,R=301]

    # Version anglaise pour les autres
    RewriteRule ^$ /en/ [L,R=301]

3. La langue en tant que sous-domaine

Il s'agit ici d'une URL de type https://fr.monsite.com ("fr" est le sous-domaine).

Points intéressants

  • Cette solution ne nécessite pas plusieurs réservations de noms de domaines : vous n'utilisez qu'un seul nom de domaine pour vos différentes versions du site
  • Il est possible de réutiliser un certificat SSL (https) si celui-ci est de type wildcard, c'est-à-dire qu'il s'applique à tous les sous-domaines du site. Sinon, il faudra un certificat par sous-domaine (ce qui nécessite de les acheter et de renouveler quand cela est nécessaire).
  • Vous pouvez choisir d'utiliser le terme que vous voulez pour distinguer les langues : "fr", "fre", "french", "francais"...
  • Vous pouvez utiliser des chemins d'accès globaux à plusieurs versions du site : https://fr.monsite.com/info et https://en.monsite.com/info pointent vers le même fichier.
  • Vous pouvez rediriger chaque sous-domaine vers un serveur physique rapidement. Ce serveur pourra ainsi être adapté (en mémoire, en performances et capacité des disques...) selon les usages du site Internet. Vous pourrez aussi déployer une mise à jour du site ou l'arrêter sans impacter les autres versions du site.

Points de vigilance

  • Il faut créer un sous-domaine par langue. Bien souvent, cette gestion se fait au niveau administration du serveur, en créant une entrée de DNS de type A. Il s'agit d'une opération assez rapide, ce n'est donc pas véritablement un inconvénient.
  • Il faut veiller à ce que le système de cache du site Internet gère bien les sous-domaines indépendamment. Ainsi, pour un article, si le chemin d'accès est le même dans entre plusieurs langues, il faut vérifier que le texte affiché correspond bien au sous-domaine demandé.
  • Vous devez créer un fichier sitemap et un flux RSS par langue et rediriger ceux-ci selon la langue demandée. Vous pouvez utiliser par exemple le code ci-dessous dans un fichier .htaccess, qui récupère le sous-domaine et redirige vers le bon sitemap et flux RSS (cas d'un sitemap_francais.xml et d'un sitemap_english.xml) :
    # Crée un paramètre récupérant la langue selon l'URL du site
    SetEnvIf HOST ^(fr) url_sitemap=sitemap_francais.xml url_rss=rss_francais.xml
    SetEnvIf HOST ^(en) url_sitemap=sitemap_english.xml url_rss=rss_english.xml

    # **************** SITEMAP *****************
    RewriteRule ^sitemap\.xml$ /xml/%{ENV:url_sitemap} [L]     
       
    # **************** RSS *****************
    RewriteRule ^rss\.xml$ /xml/%{ENV:url_rss} [QSA,L]
  • Une attention doit aussi être portée sur les cookies et leur niveau d'accès. Selon le paramétrage utilisé pour définir un cookie, celui-ci pourra être accessible depuis un autre sous-domaine ou non : si le champ domain ne contient pas de sous-domaine, un seul cookie sera accessible depuis tous les sous-domaines.

Conclusion

De ma propre expérience, la 2ème proposition est de prime abord la plus simple à mettre en place pour un petit site Internet. Cependant, à mesure que celui-ci s'enrichit de fonctionnalités, la réécriture d'URL sera de plus en plus complexe et la 3ème proposition présentera un gain de temps sur ce point.

Quant à la première proposition, elle est à mon avis à mettre en place pour les sites de grande envergure, afin de les gérer indépendamment. Il ne s'agira plus à ce niveau de gérer des langues mais de faire une localisation selon des pays.

Dernière modification le 13/08/2021 - Quillevere.net

Rechercher sur le site

fr en rss RSS info Informations