Configuration spécifique de mod_rewrite (internationalisation)

Discussion dans 'URL Rewriting et .htaccess' créé par frontal1660, 19 Décembre 2014.

  1. frontal1660
    frontal1660 Nouveau WRInaute
    Inscrit:
    19 Décembre 2014
    Messages:
    2
    J'aime reçus:
    0
    Bonjour,
    Je pense que ce sujet a déjà été couvert plusieurs fois mais je n'arrive pas à trouver une config satisfaisante. C'est pas faute d'avoir cherché.

    J'utilise actuellement ces règles sous Apache 2.2 afin de rediriger correctement mes utilisateurs en fonction de la langue de leur navigateur.

    Code:
    RewriteCond %{HTTP:Accept-Language} ^en [NC]
    RewriteRule ^/$ http://www.monsite.com/en/ [L,R=301]
    
    RewriteCond %{HTTP:Accept-Language} ^fr [NC]
    RewriteRule ^/$ http://www.monsite.com/fr/ [L,R=301]
    
    RewriteCond %{HTTP:Accept-Language} ^es [NC]
    RewriteRule ^/$ http://www.monsite.com/es/ [L,R=301]
    
    Ces règles fonctionnent bien mais j'aimerais les modifier afin de pouvoir réécrire :

    Code:
    www.mysite.com/pagex.php
    en

    Code:
    www.mysite.com/LANGUAGE-X/pagex.php 
    Bien entendu, LANGUAGE-X représente le sous répertoire (fr, en, es) correspondant à la langue du navigateur.

    Avec ma config, j'obtiens une erreur 404.

    Apple fait ca. Quand vous entrez

    Code:
    www.apple.com/iphone 
    vous êtes redirigé vers

    Code:
    wwww.apple.com/fr/iphone (si votre navigateur est en francais)
    Des idées ?

    Merci d'avance.
     
  2. baud74
    baud74 WRInaute impliqué
    Inscrit:
    21 Juillet 2014
    Messages:
    623
    J'aime reçus:
    0
    quelque chose du genre :

    RewriteCond %{HTTP:Accept-Language} ^fr [NC]
    RewriteRule ^/([a-z]+\.php)$ http://www.monsite.com/fr/$1 [L,R=301]
     
  3. frontal1660
    frontal1660 Nouveau WRInaute
    Inscrit:
    19 Décembre 2014
    Messages:
    2
    J'aime reçus:
    0
    Merci beaucoup pour ta réponse rapide et efficace.

    Pour info, j'ai juste modifié quelques petites choses, en partant de ta réponse.

    Code:
    RewriteCond %{HTTP:Accept-Language} ^fr [NC]
    RewriteRule ^/([0-9a-zA-Z]+\..*)$ http://www.monsite.com/fr/$1 [L,R=301]
    Encore merci.