Aide gratuite et appels d'offre pour la création de site internet, nos développeurs et graphistes professionnels vous répondent.


    Redirection par langue via le htaccess

    Partagez
    avatar
    nossibe
    Fondateur

    Masculin Nombre de messages : 2306
    Age : 37
    Logiciel de graphisme : Gimp, Blender, Inkscape
    Langages web / CMS : HTML, CSS, PHP, Joomla, Prestashop, Wordpress
    Réputation : 6
    Date d'inscription : 30/09/2005

    Redirection par langue via le htaccess

    Message par nossibe le Ven 9 Sep - 15:45

    Bonjour,

    Certains d'entre vous ont sans doute un site muli-langue et se demandent s'il est possible de rediriger les visiteurs directement sur la page correspondant à leur langue, et bien je vais vous expliquer comment faire en n'utilisant ni php, ni javascript, mais seulement le htaccess de votre site...

    Tout d'abord voici le code à ajouter à votre htaccess :
    Code:
    RewriteCond %{HTTP:Accept-Language} ^en-en [NC]
    RewriteRule ^$ en/index.html [L,R=301]

    Comment ça marche ?
    La variable Accept-Language est une variable transmise par votre navigateur, elle contient la liste des langues acceptées par celui-ci dans leur ordre d'importance. Ainsi, si vous utilisez un navigateur en russe, la langue prioritaire sera le russe, pour vous qui me lisez, je suppose que votre navigateur est en français, la langue prioritaire est donc le français.

    En recherchant quelle est la langue de votre navigateur pour effectuer une éventuelle redirection, ce code permet de ne pas prendre en compte le pays où vous vous trouvez (contrairement à un système javascript basé sur les IP) mais bien la langue que vous utilisez.

    Pour les langues parlées dans différents pays il existe des nuances, ainsi les français, les belges ou les Suisses n'utilisent pas le même français. La aussi ces nuances sont prises en compte. Pour rediriger un français le code sera fr-fr, pour un belge ce sera fr-be et pour un suisse fr-ch.
    Il vous suffit donc de remplacer en-en dans le code ci-dessus par le code correspondant à la langue souhaitée.
    La liste des code langue est disponible à cette adresse :
    http://msdn.microsoft.com/en-us/library/ms533052%28v=vs.85%29.aspx

    Dans le code, en/index.html est la page où sera redirigé le visiteur utilisant la langue précédemment choisie, remplacez la donc par l'url de la page où vous souhaitez que que la redirection mène.

    Si vous avez plusieurs langues sur votre site il est possible de rediriger sur les différentes pages correspondantes en dupliquant le code autant de fois que nécessaire :

    Code:
    RewriteCond %{HTTP:Accept-Language} ^en-en [NC]
    RewriteRule ^$ en/index.html [L,R=301]
    RewriteCond %{HTTP:Accept-Language} ^fr-be [NC]
    RewriteRule ^$ be/index.html [L,R=301]
    RewriteCond %{HTTP:Accept-Language} ^fr-ch [NC]
    RewriteRule ^$ ch/index.html [L,R=301]

    Installez le code à la fin de votre htaccess et tout devrait fonctionner parfaitement.

    Pour tester avec les différents navigateurs changez-en la langue principale :
    - pour firefox : option / contenu / langue / choisir / choisir une langue à ajouter /
    ajouter / sélectionner la langue dans la fenêtre juste au dessus et la faire
    monter en première place puis vider le cache avant de recharger la page de votre site;

    - pour internet explorer : option internet / général / langue / ajouter / faire monter la langue en première position / vider le cache avant de recharger la page de votre site;

    Pour google chrome : Option / bouton configuration avancée (à gauche) / configuration correcteur d'orthographe / ajouter / déplacer (par drag en drop) la langue en première position / vider le cache avant de recharger la page de votre site;

    Pour Safari : il est impossible de modifier la langue pour l'instant (V5.1)

    Cette technique peut aussi être utilisée pour rediriger vers un site externe en entrant l'adresse complète de celui-ci :

    Code:
    RewriteCond %{HTTP:Accept-Language} ^fr-ch [NC]

    RewriteRule ^$ http://site-de-redirection.fr [L,R=301]

    Voila, je pense que vous avez toutes les cartes en main pour rediriger les visiteurs étrangers comme bon vous semble Surprised

    N'hésitez pas à poster vos questions,
    cordialement, Nossibé


      La date/heure actuelle est Sam 18 Nov - 10:17