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 :

Multiple rewrite rule


Sujet :

Apache

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    Par défaut Multiple rewrite rule
    Bonjour à tous,
    alors en fait j'avais fait un url rewrite y'a pas quelques mois afin de récupérer des variables spécifiques et les traiter dans une page php.
    J'avais besoin d'une url de type http://www.domaine.com/marque/langue

    J'avais donc fait quelque chose comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine On
    RewriteBase /
    RewriteRule    ^([a-z]+)/?([a-z]*)$ erreur404.php?marque=$1&lang=$2
    ErrorDocument 404 /erreur404.php
    Aujourd'hui j'ai besoin de réécrire le .htaccess parce que j'ai une nouvelle variable qui va déterminer si je dois accéder à un dossier spécifique ou non. J'explique :

    Dans l'état actuel des choses, le erreur404.php et l'index.php se trouvent à la racine du dossier public_html. Aujourd'hui, il faudrait que ces urls soient les mêmes, mais aussi rajouter une url de type http://www.domaine.com/dossier/marque/langue

    J'ai donc pensé à faire une règle multiple et ai essayé plein de choses dont :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteEngine On
    RewriteBase /
    RewriteRule    ^dossier/([a-z]+)/?([a-z]*)$ dossier/erreur404.php?marque=$1&lang=$2
    RewriteRule    ^([a-z]+)/?([a-z]*)$ erreur404.php?marque=$1&lang=$2
    ErrorDocument 404 /erreur404.php
    Cependant ça ne semble pas fonctionner Pourriez-vous me dire ou ça cloche ? Et dites moi aussi si je ne suis pas clair !

    Merci d'avance !

  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 JackStrieger Voir le message
    Cependant ça ne semble pas fonctionner
    Dans le détail, ça veut dire quoi ?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    Par défaut
    Il n'y a que la seconde règle qui fonctionne. Enfin dans tous les cas, je n'accède pas à "/dossier"

  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 veut dire quoi "ne semble pas fonctionner" ? Erreur 404 ? Erreur 500 ? Autre chose ? Le navigateur affiche quoi ? Il y a quoi dans les logs d'erreur d'Apache ?

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Ca veut dire quoi "ne semble pas fonctionner" ? Erreur 404 ? Erreur 500 ? Autre chose ? Le navigateur affiche quoi ? Il y a quoi dans les logs d'erreur d'Apache ?
    Ha oui désolé je ne suis pas très clair.

    En fait, c'est la règle que j'ai rajouté qui semble ne servir à rien. Il n'y a pas d'erreur en soi.
    Cependant, j'avais adapté la première règle d'un truc trouvé sur internet, qui disait qu'on pouvait faire basculer le site vers une fausse erreur 404 et récupérer les variables dans un fichier d'erreur... Et je crois que c'est là où ça coince parce que la page bascule toujours vers le error404.php du dossier /public_html...

    En fait je n'arrive pas à faire basculer la règle rajoutée dans l'autre dossier !

    J'ai toujours du mal avec les règles de réécriture, désolé :/

  6. #6
    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
    Je ne comprends pas très bien. Pourquoi le script est toujours erreur404.php ? J'ai l'impression que il y a 3 fois la même chose, en fait.

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    Par défaut
    Ben en fait, comme on avait besoin de faire une autre internet qui soit identique à l'interface de base, on a décidé de créer un dossier qui contiendrait les mêmes fichiers. Et donc on a le même fichier dans ce nouveau dossier. Globalement ça donne ça :

    public_html/.htaccess
    public_html/index.php
    public_html/erreur404.php

    public_html/dossier/index.php
    public_html/dossier/erreur404.php

    Globalement la structure ça donne ça. Ces fichiers en particulier font exactement la même chose. La seule différence c'est que je dois savoir s'ils demande à accéder au nouveau dossier ou s'ils veulent tomber sur la page de base...

  8. #8
    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
    Je parlais du .htaccess que tu as donné dans ton premier message : c'est erreur404.php partout, jamais index.php.

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    Par défaut
    Ah oui !

    En fait c'est dans le error404.php qui redirige vers le index.php après traitement...

  10. #10
    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 JackStrieger Voir le message
    En fait, c'est la règle que j'ai rajouté qui semble ne servir à rien.
    Comment ça, elle ne sert à rien ? Comment tu sais qu'elle ne sert à rien ? Tout m'a l'air correct.

    A priori, tu dois pouvoir te contenter d'une seule règle valable pour les deux cas tout simplement en supprimant le ^ au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine On
    RewriteBase /
    RewriteRule    ([a-z]+)/?([a-z]*)$ erreur404.php?marque=$1&lang=$2
    ErrorDocument 404 /erreur404.php

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    Par défaut
    Citation Envoyé par _Mac_ Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine On
    RewriteBase /
    RewriteRule    ([a-z]+)/?([a-z]*)$ erreur404.php?marque=$1&lang=$2
    ErrorDocument 404 /erreur404.php
    Merci, mais je ne vois pas bien comment il pourrait accéder à un autre dossier avec une seule règle ! Je voudrais surtout pouvoir rediriger la requête vers un autre dossier si le mot clé "dossier" se trouve dans l'url !

    Merci de ton aide !

  12. #12
    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
    Ben vu que les URL cibles sont strictement identiques dans le cas ou il y a dossier ou pas dans l'URL, il me semble qu'on peut simplifier la réécriture.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ^dossier/([a-z]+)/?([a-z]*)$ dossier/erreur404.php?marque=$1&lang=$2
              ^([a-z]+)/?([a-z]*)$ erreur404.php?marque=$1&lang=$2
    Je n'ai pas vu mais il n'y a pas de [L] à la fin de tes RewriteRule. C'est peut-être ça le problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ewriteRule    ^dossier/([a-z]+)/?([a-z]*)$ dossier/erreur404.php?marque=$1&lang=$2 [L]
    RewriteRule    ^([a-z]+)/?([a-z]*)$ erreur404.php?marque=$1&lang=$2 [L]

  13. #13
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 115
    Par défaut
    Merci beaucoup pour ton aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rewrite Rule + Proxy balancer
    Par norten dans le forum Apache
    Réponses: 7
    Dernier message: 05/01/2010, 11h11
  2. Rewrite rule et load balancing Tomcat
    Par chrime71 dans le forum Apache
    Réponses: 12
    Dernier message: 07/12/2009, 16h29
  3. la "rewrite rule" absolue
    Par speedev dans le forum Apache
    Réponses: 8
    Dernier message: 03/07/2008, 17h32
  4. [URL Rewriting] problème de rewrite rule
    Par julien.63 dans le forum Apache
    Réponses: 1
    Dernier message: 30/10/2007, 13h38
  5. Réponses: 2
    Dernier message: 24/11/2005, 19h13

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