Messages: 5

Enregistré le: 14 Sep 2009

Message le Lun Déc 26, 2016 20:38

Bonjour,
je suis bloquer dans l'utilisation de RewriteCondition pour cumuler les paramètres passer dan l'url.
je ne sais pas si ma question est compréhensible !!.
j'explique:
j'ai une page "index.php" qui peut récupérer 1 ou plusieurs paramètres : ?paramA=$1 et (ou) paramB=$2 et (ou) paramC=$3 et (ou) paramPAGE=$4.


j'ai essayer de réaliser la redirection de toutes les liens qui peuvent exister selon le ou les paramètres envoyés mais sa ne fonctionne pas comme prévu.
je sais que si j'utilise rewriteCond sa me faciliterai la tache mais je ne sais par ou commencer.
voici le code que j'ai fait :
Code: Tout sélectionner
    RewriteRule ^folder/list-([0-9])\.html$  folder/index.php?paramPAGE=$1 [QSA,L]
    RewriteRule ^folder/(.*)\.html$  folder/index.php?paramA=$1 [QSA,L]
    RewriteRule ^folder/(.*)-list-([0-9])\.html$  folder/index.php?paramA=$1&paramPAGE=$2 [QSA,L]
    RewriteRule ^folder/(.*)\.html$  folder/index.php?paramB=$1 [QSA,L]
    RewriteRule ^folder/(.*)-list-([0-9])\.html$  folder/index.php?paramB=$1&paramPAGE=$2 [QSA,L]
    RewriteRule ^folder/(.*)\.html$  folder/index.php?paramC=$1 [QSA,L]
    RewriteRule ^folder/(.*)-list-([0-9])\.html$  folder/index.php?paramC=$1&paramPAGE=$2 [QSA,L]

    RewriteRule ^folder/(.*)-(.*)\.html$  folder/index.php?paramA=$1&paramB=$2 [QSA,L]
    RewriteRule ^folder/(.*)-(.*)-list-([0-9])\.html$  folder/index.php?paramA=$1&paramB=$2&paramPAGE=$3 [QSA,L]
    RewriteRule ^folder/(.*)-(.*)\.html$  folder/index.php?paramA=$1&paramC=$2 [QSA,L]
    RewriteRule ^folder/(.*)-(.*)-list-([0-9])\.html$  folder/index.php?paramA=$1&paramC=$2&paramPAGE=$3 [QSA,L]
    RewriteRule ^folder/(.*)-(.*)\.html$  folder/index.php?paramB=$1&paramC=$2 [QSA,L]
    RewriteRule ^folder/(.*)-(.*)-list-([0-9])\.html$  folder/index.php?paramB=$1&paramC=$2&paramPAGE=$3 [QSA,L]

    RewriteRule ^folder/(.*)-(.*)-(.*)\.html$  folder/index.php?paramA=$1&paramB=$2&paramC=$3 [QSA,L]
    RewriteRule ^folder/(.*)-(.*)-(.*)-list-([0-9])\.html$  folder/index.php?paramA=$1&paramB=$2&paramC=$3&paramPAGE=$4 [QSA,L]


voici les probabilités qui peuvent exister et que je désire avoir en déclarant rewriteCond:
A+B+C+PAGE [OR]
A+B+C [OR]
A+B [OR]
A+B+PAGE [OR]
B+C [OR]
B+C+PAGE [OR]
A+C [OR]
A+C+PAGE [OR]
A [OR]
A+PAGE [OR]
B [OR]
B+PAGE [OR]
C [OR]
C+PAGE [OR]
une petite aide de votre part serai la bienvenu. merci
Haut
5 Réponses
Messages: 112

Enregistré le: 22 Fév 2016

Message le Lun Déc 26, 2016 21:21

RewriteRule ^folder/(.*)\.html$ folder/index.php?paramA=$1 [QSA,L]
RewriteRule ^folder/(.*)\.html$ folder/index.php?paramB=$1 [QSA,L]

cela ne peut pas fonctionner, c'est la première règle qui sera toujours exécutée.
il faut absolument trouver quelque chose pour que les règles soient différentes selon le paramètre à passer.
Haut
Messages: 5

Enregistré le: 14 Sep 2009

Message le Lun Déc 26, 2016 23:31

Merci pour ta réponse loui63.
Effectivement c'est toujours la première règle qui s'exécute. j'en déduit que je doit trouver une méthode pour ne pas mettre $1 comme valeur pour chaque paramètre envoyé. est ce que c'est ce que tu veut dire ?
Haut
Messages: 1438

Enregistré le: 11 Déc 2012

Message le Lun Déc 26, 2016 23:37

La liste est lue de haut en bas, ta regle folder/(.*).html devrait etre placee a la fin sinon toutes les autres du style folder/blabla-list.html ne seront pas executees car la premiere correspond a nimporte quoi entre folder/ et .html

Et oui tu ne peut pas avoir folder/(.*).html qui envoit un coup a parama un coup a paramb, comment tu veux quil sache quand envoyer parama et quand envoyer a paramb il peut pas il enverra toujours a parama car cest la premiere de la liste.
Haut
Messages: 5

Enregistré le: 14 Sep 2009

Message le Mar Déc 27, 2016 2:14

placer folder/(.*).html à la fin de la règle tu veut dire ?
en attendant je vait faire un petit tour dans la documentation parce que d'après vos réponse je sens que j'ai mal compris la syntaxe pour écrire des règles.
et merci pour votre rapidité de répondre. :wink:
Haut
Messages: 1438

Enregistré le: 11 Déc 2012

Message le Mar Déc 27, 2016 10:49

non je veut bien dire folder/(.*).html à la fin du fichier, en tous cas en dessous de regles comme folder/(.*)-list.html et autres.
Il faut commencer par le plus spécifique et finir par le général, le plus large, comme ca si une url correspond au cas specifique, hop c'est fait et le reste n'est pas lu (ta balise [L])
Haut