IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

[.htaccess] Rediriger la racine vers une langue par défaut


Sujet :

Apache

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 96
    Points : 45
    Points
    45
    Par défaut [.htaccess] Rediriger la racine vers une langue par défaut
    Bonjour,

    Je n'arrive pas après avoir testé une dizaine de lignes trouvés à gauche à droite, de rediriger toutes les urls sans langue dans l'url vers la version par défaut (/en/ dans mon cas).
    Exemple :
    http://www.ndd.com ---> http://www.ndd.com/en
    http://www.ndd.com/blabla/test ---> http://www.ndd.com/en/blabla/test

    Voici mon code actuel : (Qui contient déjà 2 règles, la redirection vers www. si absent, et le retrait du / de fin si présent).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <IfModule mod_rewrite.c>
       Options +FollowSymLinks
       RewriteEngine On
    </IfModule>
     
    // mes 2 règles qui fonctionnent cités plus haut
    RewriteCond %{HTTP_HOST} ^ndd.com$
    RewriteRule ^(.*)   http://www.ndd.com/$1  [QSA,L,R=301]
    RewriteRule ^(.+)/$ http://www.ndd.com/$1 [R=301,L]
     
    // Code pour faire fonctionner mon framework, donc à pas toucher :-)
    <IfModule mod_rewrite.c>
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteCond %{REQUEST_FILENAME} !-d
       RewriteRule ^(.*)$ index.php/$1 [L]
    </IfModule>

    Je vous remercie par avance, à celui ou celle qui me résout mon problème

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Au pif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !/(en|fr|it|...)/ # Remplacer les ... par la liste des langues connues
    RewriteRule ^(.*)$ /en/$1 [R]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    Merci, je teste ça dès demain matin, et reviens donner des nouvelles.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 96
    Points : 45
    Points
    45
    Par défaut
    Re, non ca ne marche pas, j'ai un Internal Servor Error

    EDIT : J'ai un peu trifouillé et tester divers trucs, ca semble marcher correctement pour le critère à la racine.

    Soit http://www.ndd.com ---> http://www.ndd.com/en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} ^(/(fr|en))?/$
    RewriteRule ^(.*) http://www.ndd.com/en/$1 [QSA,L,R=301]
    Mais dans le cas où j'avais une query string non.
    http://www.ndd.com/blabla/test ---> http://www.ndd.com/en/blabla/test

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu es sûr ? L'exemple que tu donnes ne contient aucune query string

    Je pense que malgré tout ma syntaxe est meilleure car ta condition est vraie aussi lorsque les chemins commencent par /en ou /fr, ce qui me laisse penser qu'en fait ça ne marche pas (au passage, vide le cache de ton navigateur entre chaque test car les redirections permanentes sont gardées en mémoire par les navigateurs).

    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} !^/(en|fr)/
    RewriteRule ^(.*)$ /en/$1 [QSA,R=301]

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

Discussions similaires

  1. Rediriger l'internaute vers une langue par défaut
    Par jamdinhe dans le forum Apache
    Réponses: 0
    Dernier message: 02/10/2014, 14h12
  2. Réponses: 2
    Dernier message: 18/11/2008, 12h50
  3. Rediriger les répertoires vers une page
    Par Alexandre T dans le forum Struts 1
    Réponses: 3
    Dernier message: 20/09/2007, 18h27
  4. rediriger un port vers une adresse IP
    Par devlopassion dans le forum Administration
    Réponses: 6
    Dernier message: 04/11/2006, 11h24
  5. Réponses: 1
    Dernier message: 24/11/2005, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo