.htaccess : incompréhension

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

jvgamers
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mar Juil 13, 2004 1:09

.htaccess : incompréhension

Message le Jeu Juil 20, 2006 16:27

Bonjour à tous,

J'ai un petit problème avec un htaccess, à savoir que le résultat me déroute un peu.
Voilà ce que je veux :
SI Condition
Alors :
Règle 1
Règle 2
Règle 3...

Or, j'ai fais à peu près cela :
RewriteCond Condition
RewriteRule ^/page1.html$ index.php?var1=ok [QSA,L]
RewriteRule ^/page2.html$ index.php?var2=ok [QSA,L]
RewriteRule ^/(.*) index.php?var3=ok [QSA,L]

Seulement, au lieu de s'arrêter comme je le veux à la première règle fonctionnelle, il continu malgré tout après avoir réécrit une première fois l'url.
Du coup, si je tape page1.html, je tombe sur index.php?var3=ok&var1=ok.
Or, moi je voudrais dans ce cas avoir seulement index.php?var1=ok.

Comment faire ? J'ai des idées de pourquoi ca ne fonctionne pas, mais aucune idée de comment résoudre le problème.

magic corp.
WRInaute impliqué
WRInaute impliqué
 
Messages: 425
Inscription: Jeu Juin 17, 2004 9:56

Message le Jeu Juil 20, 2006 18:00

Et en virant le RewriteCond (Uniquement pour le test) sa pose toujours problême ?

jvgamers
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mar Juil 13, 2004 1:09

Message le Jeu Juil 20, 2006 19:27

Malheureusement non, je ne peux pas, il est nécessaire et je plante mon site si je le vire.
En fait j'ai justement l'impression que la condition s'applique sur tous les rewrite rule jusqu'à ce qu'une règle soit effective, là il trouve un [L] et il sort de la condition, mais il continu quand même à appliquer les règles suivantes.

Bref, je ne fais que supposer, il n'empêche que c'est assez handicapant !

ChezThierry
WRInaute impliqué
WRInaute impliqué
 
Messages: 273
Inscription: Ven Oct 21, 2005 13:33

Message le Jeu Juil 20, 2006 19:59

Normalement, le [L] devrait effectivement empécher les règles suivantes de s'appliquer. J'ai déjà vu ce comportement, je ne sais pas ce qui le déclenche.

Le mieux, pour contourner le problème, c'est de faire en sorte que la dernière règle ne s'applique que si l'on a pas déjà une url du type index.php... ainsi :

Code: Tout sélectionner
RewriteCond Condition
RewriteRule ^/page1.html$ index.php?var1=ok [QSA,L]
RewriteRule ^/page2.html$ index.php?var2=ok [QSA,L]
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^/(.*) index.php?var3=ok [QSA,L]

jvgamers
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mar Juil 13, 2004 1:09

Message le Jeu Juil 20, 2006 20:33

J'y ais pensé, le problème c'est que j'ai largement simplifié mon htaccess dans mon exemple... J'ai une vingtaine de règle et d'url, et à la fin seulement les 2 règles qui s'appliquent "une seconde fois"... Alors je pourrais mettre 20 conditions, mais j'aimerais une solution plus simple et logique... J'ai un peu l'impression de trop bidouiller sinon :)

ChezThierry
WRInaute impliqué
WRInaute impliqué
 
Messages: 273
Inscription: Ven Oct 21, 2005 13:33

Message le Jeu Juil 20, 2006 21:02

Ok, je comprends, mais comme je n'ai aucune idée de pourquoi ton [L] ne fonctionne pas, je ne peux que recommander une autre bidouille :
ajouter S=50 après chaque L (pour skipper les 50 prochaines règles)

Code: Tout sélectionner
RewriteRule ^/page1.html$ index.php?var1=ok [QSA,L,S=50]
RewriteRule ^/page2.html$ index.php?var2=ok [QSA,L,S=50]
...

jvgamers
WRInaute discret
WRInaute discret
 
Messages: 77
Inscription: Mar Juil 13, 2004 1:09

Message le Jeu Juil 20, 2006 21:11

Bon, j'ai pu faire le test sans les RewriteCond, ca ne change rien. Quand au S=50, ca ne fonctionne pas, les règles qui suivent sont tout de même éxécutées... A n'y rien comprendre, je désespére :p

Pour info tout de même, je suis sur dédié, donc si modif il y a à faire niveau config de apache, aucun soucis.

EDIT: je viens de me rendre compte d'un truc super bizarre... Si je vire ma dernière règle, plus rien ne fonctionne. (erreur 500 : maximum of redirections... dans les logs apache)

A l'heure actuelle, elle est construite comme suit :
RewriteRule ^([a-zA-Z0-9].(.*))$ /$1 [QSA,L]

Allez savoir pourquoi si je ne la met pas, plus rien ne fonctionne...


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités