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 :

Redirection HTACCESS pour site bilingue


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 100
    Par défaut Redirection HTACCESS pour site bilingue
    Bonjour tout le monde,

    Je dois faire un site bilingue et je bloque sur un petit problème de redirection.

    Pour le visiteur, les deux versions se trouvent respectivement dans deux répertoires différents :
    http://www.monsite.com/fr
    http://www.monsite.com/en

    Comme le code source est unique, tous les fichiers sont en fait directement à la racine du site.

    J'ai réussi facilement à simuler la redirection pour tous les scripts php.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteRule ^([0-9a-zA-Z]+)/([0-9a-zA-Z-_/]+)/$ index.php?lan=$1&p=$2  [QSA,L]
    RewriteRule ^([0-9a-zA-Z]+)/([0-9a-zA-Z-_/]+)$ index.php?lan=$1&p=$2  [QSA,L]
    RewriteRule ^([0-9a-zA-Z]+)/$ index.php?lan=$1  [QSA,L]
    RewriteRule ^([0-9a-zA-Z]+)$ index.php?lan=$1  [QSA,L]
    Ainsi :
    http://www.monsite.com/fr/contact/
    est redirigé vers :
    http://www.monsite.com/index.php?lan=fr&p=contact

    Et tout fonctionne à priori correctement. Sauf que le basepath html étant http://www.monsite.com/fr/ ou http://www.monsite.com/en/, tous les fichiers css, images, js sont cherché dans les faux répertoire de langue et non à la racine et ne sont alors plus trouvés.

    Comme ce serait trop long de définir des chemins absolus pour tous les fichiers, j'envisage deux solutions :
    • supprimer "en/" ou le "fr/" pour tous les fichiers avec extension

    • mettre tout dans le répertoire "fr" et redirigé le répertoire "en" vers "fr", en ajoutant un paramètre pour indiquer que c'est de l'anglais.


    Mais voilà, je patauge depuis des heures, et je n'arrive pas du tout à le faire. Est-ce que quelqu'un a une idée ?

    Merci en tout cas d'avoir pris le temps de lire ce message et peut-être d'y répondre.

    Bonne journée,

    Korbn

  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
    Par défaut
    Citation Envoyé par korbn Voir le message
    • supprimer "en/" ou le "fr/" pour tous les fichiers avec extension
    Tu veux faire ça comment ? Je n'ai pas bien compris, en fait.

    Ce que je ferais c'est ajouter une règle de réécriture pour les fichiers avec une extension donnée pour les "ramener" dans le répertoire parent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule \.(js|css|jpg)$ ../$0 [L]
    Je n'ai pas testé, je ne sais pas du tout si ça marche.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 100
    Par défaut
    Merci beaucoup pour ta réponse.

    Je voudrais faire l'équivalent d'un str_replace mais en htaccess et seulement pour les fichiers avec une extension autre que "php". Autrement dit, l'équivalent htaccess du code suivant ($extension étant l'extension et $url l'adresse url demandée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($extension!=".php") $url = str_replace("en/","",$url);
    Ainsi,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/website/monsite/fr/site/public/themes/style.css
    devrait être transformé en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/website/monsite/site/public/themes/style.css
    sauf qu'avec ton code, cela devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/website/.css
    Est-ce que quelqu'un sait où cela cloche ?

    Merci d'avance

  4. #4
    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
    Par défaut
    Ca cloche dans ma règle, visiblement ! En même temps, j'avais prévenu que je n'avais pas testé On va essayer autre chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !\.php$
    RewriteRule (.*) ../$1 [L]

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 100
    Par défaut
    Merci beaucoup, cela marche nickel.

    Ce module est vraiment très utile quand tu sais t'en servir.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 100
    Par défaut
    Zut, cela ne marche en fait pas du tout une fois que je mets cela sur le serveur.

    Cela affiche l'erreur suivante "Bad Request Your browser sent a request that this server could not understand."

    Si je rajoute une redirection [L,R] et que je charge le fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monsite.com/en/style.css
    voilà l'url affichée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/en/style.csshttp://www.monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/var/www/virtual/monsite.com/en/style.css
    C'est grave docteur ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/02/2014, 16h16
  2. Réponses: 10
    Dernier message: 07/04/2010, 02h55
  3. .htaccess pour gérer l'erreur 404 : plantage du site
    Par Thomus38 dans le forum Apache
    Réponses: 8
    Dernier message: 19/07/2006, 12h29
  4. redirection d'un site utilisation .htaccess
    Par zorian dans le forum Apache
    Réponses: 3
    Dernier message: 26/06/2006, 18h19
  5. [ASP]pb pour un site bilingue
    Par DEC dans le forum ASP
    Réponses: 13
    Dernier message: 20/06/2004, 14h26

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