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 :

Réécriture d'url erronée


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 1
    Par défaut Réécriture d'url erronée
    Bonjour à vous la communauté,

    Actuellement, je conçois un site multilingue, le soucis est que je souhaite que cette url:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://127.0.0.1/ob-home/local/home.php?lang=fr
    devienne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://127.0.0.1/ob-home/local/home/fr
    Bien sur j'ai effectué des recherches qui mon mener a faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^home\/([a-zA-Z]+)$ /home.php?lang=$1 [L]
    mais cela ne marche pas, tant dis que la réécriture précédement faite fonctionne pour masquer un répertoire dans l'url qui est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteCond %{REQUEST_URI} !^/local/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /ob-home/local/$1 [L]

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 11
    Par défaut
    Bonsoir,

    je pense que c est du au drapeau [L] car après il ne redirige pas "home.php?lang=$1" vers "/ob-home/local/home.php?lang=$1"

    mais pas certain essaye de le supprimer pour voir

    bye

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut
    Plusieurs pistes:

    1) As tu indiqué une RewriteBase ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine On
    RewriteBase /ob-home/local/
    Sans cela, je crois que ta ligne ira rechercher http://127.0.0.1/home/[lang] au lieu de http://127.0.0.1/ob-home/local/home/[lang]
    vu que tu indique a ta regle que ton URL doit COMMENCER par home/ (a cause du ^)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^home/([a-zA-Z]+)$ /home.php?lang=$1 [L]
    Ou alors, sans RewriteBase, il faut indiquer l'url complete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^ob-home/local/home/([a-zA-Z]+)$ /home.php?lang=$1 [L]
    mais il est en général plus commode d'utiliser un RewriteBase que d'indiquer l'url complète dans toutes les règles (et plus simple a modifier du coup)

    PS: pas besoin d'escape les slash (/) seulement les anti-slash (\) : (\\ => OK \/ => inutile )


    2) comme indiqué dans le post précédant, le [L] peut pauser problème également:

    imaginons que ton utilisateur indique: http://127.0.0.1/home/fr et que tu veuille rediriger au final vers http://127.0.0.1/ob-home/local/home.php?lang=fr

    dans le bon ordre tu peux faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    RewriteRule ^home/([a-zA-Z]+)$ /home.php?lang=$1 [N]
     
    RewriteCond %{REQUEST_URI} !^/local/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /ob-home/local/$1 [L]
    La première règle redirigera http://127.0.0.1/home/fr vers http://127.0.0.1/home.php?lang=fr, puis continuera avec la règle suivante (grâce au flag [N] (next))
    Et, donc, la règle suivante redirigera http://127.0.0.1/home.php?lang=fr vers http://127.0.0.1/ob-home/local/home.php?lang=fr et finira ici (dû au flag [L] (last))

    dernier conseil, tu devrais ajouter un slash facultatif a la fin de tes règles pour que cela fonctionne pour ces deux url:
    http://127.0.0.1/home/fr
    et
    http://127.0.0.1/home/fr/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^home/([a-zA-Z]+)/?$ /home.php?lang=$1 [L]
    Sans cela, la deuxième url ne rentrera pas dans la condition, et ne fonctionnera donc pas.

    Voila voila,
    Dis nous si cela te conviens (et Résolu, si c'est le cas )

Discussions similaires

  1. Réécriture d'url dans fichier ASP
    Par Ishizaki dans le forum ASP
    Réponses: 1
    Dernier message: 22/02/2007, 11h44
  2. ASP + Access, réécriture d'URL
    Par duchesnef dans le forum ASP
    Réponses: 5
    Dernier message: 14/09/2006, 09h54
  3. La réécriture d'URL avec Apache
    Par agencep dans le forum Langage
    Réponses: 3
    Dernier message: 25/04/2006, 16h37
  4. Réécriture d'url en asp.
    Par éelise dans le forum ASP
    Réponses: 4
    Dernier message: 13/12/2005, 08h53

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