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 :

[URL rewriting] Dernière règle ignorée


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut [URL rewriting] Dernière règle ignorée
    Bonjour a tous,

    je fais mon premier RewriteRule et je suis assez content de mon premier ,htaccess mais je bloque sur truc

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Options +FollowSymlinks
    RewriteEngine on
    RewriteRule ^manifestation-festival-loisir-hobby-(.+)-(.+)\.html$  index.php?city=$1&canton=$2  [L]
    RewriteRule ^evenements-dans-le-canton-de-(.+)\.html$  index.php?canton=$1  [L]
    RewriteRule ^tous-les-evenements-pour-le-mois-de-(.+)\.html$  index.php?month=$1  [L]
    RewriteRule ^toutes-les-activites-par-(.+)\.html$  index.php?category=$1  [L]
    RewriteRule ^cette-activite-n-est-pas-conforme-(.+)\.html$  alert.php?alert=$1  [L]
    RewriteRule ^.*-(.+)-(.+)\.html$  manifestations.php?canton=$1&id=$2  [L]
    RewriteRule ^login.html$  login.php  [L]
    RewriteRule ^contact.html$  contact.php  [L]
    RewriteRule ^member.html$  member.php  [L]
    RewriteRule ^communication.html$ communication.php [L]
    RewriteRule ^my-hobby-membres.html$ my-hobbies-membres.php [L]
    Le problème que j'ai c'est avec la derniere ligne. Quand je tape
    http://www.monsite.ch/my-hobby-membres.html, ben c'est la deuxième règle qui est prise en compte
    (RewriteRule ^.*-(.+)-(.+)\.html$ manifestations.php?canton=$1&id=$2 [L]).
    Je pense que c'est parce que j'ai -hobby et -membres et dans ma premiere regle j'ai .*- et deux variable.

    Je pense que je dois modifier ma deuxieme regle mais je en sais pas comment cra mon URL varie en fonction de la page.

    exemple:
    manifestation-festival-loisir-hobby-Chêne-bourg-genève.html
    ou
    manifestation-festival-loisir-hobby-Veryier-genève.html
    donc a cause de .* il considère n'importe quoi jusqu'a "Veryier" et "geneve".

    Donc évidement, dans le cas de
    my-hobby-membres.html
    il ignore "my". N'es-ce pas?

    Comment pourrais-je alors modifier une d emes Rule pour que
    -hobby et -membres.html ne soit pas considéré comme des variable, puisque ma Règle
    RewriteRule ^my-hobby-membres.html$ my-hobbies-membres.php [L]
    n'a pas de (.+) à la place de -hobby et -memebres?


    Aussi, il faut savoir que mon site en en 3 langue et que les langue se change avec un variable get. par exemple
    my-hobbies-membres.php?lang=fr ou
    RewriteRule ^.*-(.+)-(.+)\.html?lang=en

    Comment puis alors prendre les précaution nécessaire pour la variable lang (get) ne rentre pas en conflit avec l'une des règle ci-dessus?

    Milles mercis pour vos lumières

  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
    Ton analyse est exacte : ton URL matche ^.*-(.+)-(.+)\.html$. Je vais te proposer une solution totalement révolutionnaire et garantie 100% je-me-prends-pas-la-tête : place la dernière règle avant la règle avec le filtre ^.*-(.+)-(.+)\.html$ Apache traite les règles dans l'ordre du fichier donc il faut toujours placer les règles spécifiques en début de fichier et les règles génériques en dernier.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    ha ben c'st cool de lire ton commentaire.
    En effet ca marche bien suivant ton conseil

    Merci bcp

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    ben non.

    Quoi ca marche sauf pour un truc. ca bug quand je passe d'un langue a une autre sur cette regle
    RewriteRule ^manifestation-festival-loisir-hobby-(.+)-(.+)\.html$ index.php?city=$1&canton=$2 [L]
    Quand j'ai le paramettre qui va changer la langue, comme ci-dessous, ben le parametre lang=en (ou lang=fr) est "ignoré"
    manifestation-festival-loisir-hobby-Boveresse-neuchâtel.html?lang=en
    le paramettre lang=fr, peut est passé dans n'importe quelle page

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 167
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 167
    Par défaut
    et je vois encore un autre problème, que je vais rencontré demaine je pense.
    Car demain je vais travailler le formulaire de recherche.
    C'est un formulaire avec deux champs.

    et le action du formulaire va etre dirigé sur la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^manifestation-festival-loisir-hobby-(.+)-(.+)\.html$  index.php?city=$1&canton=$2  [L]
    Saud que dans le cas de mon formulaire de recherche,
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <p class="pColor"><?php echo $langue->msg_search_text; #Rechercher un lieu près de chez vous ?></p>
    <form action="index.php" method="post" name="namef" id="idf">
        <label><?php echo $langue->msg_search_key; #Mot clé ?></label><input type="text" name="keyword" id="id" tabindex="1" />
        <label><?php echo $langue->msg_search_cp; #Code postal ou ville ?></label><input type="text" name="cp_city" id="id1" tabindex="2" />
    	<input name="send" type="submit" id="subid" value="Go" />
    </form>
    il aura les deux champs de type texte qui vont etre chaqu'un envoyé dans l'URL.

    Le probleme c'est que dans ce cas, la regle va ressembler à ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^manifestation-festival-loisir-hobby-(.+)-(.+)\.html$  index.php?keyword=$1&cp_city=$2  [L]
    Il va se mélanger les pinceaux, non?

    Comment va-til savoir que lorsque le formulaire est envoyé sur la page en question, il devra prendre en compte la deuxieme regle, qui contient 2 parametre, tout comme la premiere règle, mentionnée???

    Vous voyez ce que je veux dire?

  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
    Ajoute QSA dans les crochets de ta règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^manifestation-festival-loisir-hobby-(.+)-(.+)\.html$  index.php?city=$1&canton=$2  [QSA,L]
    Ca dit à mod_rewrite de concaténer la query string que tu construis dans ton RewriteRule avec celle qui est passée dans l'URL appelante. Sans ce paramètre, si tu redéfinis une query string dans un RewriteRule, seule cette dernière est prise en compte et la query string de l'URL appelante est ignorée.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/02/2011, 13h38
  2. Réponses: 2
    Dernier message: 19/04/2008, 16h52
  3. [URL Rewriting] problème sur une règle
    Par Mike91 dans le forum Apache
    Réponses: 1
    Dernier message: 13/09/2007, 16h20
  4. [URL Rewriting] ordre d'exécution des règles
    Par safisafi dans le forum Apache
    Réponses: 1
    Dernier message: 21/11/2006, 18h52
  5. Règle URL rewriting ne fonctionnant pas.
    Par Romalafrite dans le forum Apache
    Réponses: 2
    Dernier message: 01/10/2006, 09h10

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