[Résolu] Conflit entre 3 règles d'URL rewriting

WRInaute passionné
Bonjour,

Je suis à 2 doigts de lancer un site fort sympatoche de partage de favoris et un conflit entre 3 règles de rewriting me pose problème. Inutile de préciser que je ne suis pas une bête du rewriting... Toute aide sera donc fort appréciée :wink:

Bon, vous remarquez tout de même que je respecte bien le fait d'aller de la règle la plus spécifique à la règle la plus générale...

Voici les 3 règles qui posent problème (extrait de mon.htaccess) :
Code:
# rss/membre/tag
RewriteRule ^(rss)/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ rss.php?user=$2&tag=$3
# rss/membre
RewriteRule ^(rss)/([a-zA-Z0-9]*)$ rss.php?user=$2
# rss
RewriteRule ^(rss)$ rss.php

Concrètement, comment ce conflit se manifeste ? Ben la dernière règle, la plus générale donc, prend le dessus sur les 2 autres :(
Exemple : On peut taper -http://www.example.com/rss/NImporteQuelMot/OuExpressionIci, ça ramène toujours vers le fichier -http://www.example.com/rss

L'un(e) d'entre vous aurait-il/elle une solution à me soumettre ?

D'avance merci !

Bertrand

Au cas où ça peut jouer, je précise que je suis hébergé sur un 90plan OVH, que j'utilise l'option "Multi Domaine" et donc que mon site se trouve dans un sous dossier du domaine principal qui est autre.
 
Nouveau WRInaute
Re: Conflit entre 3 règles d'URL rewriting

Salut,

Essaye en rajoutant [L] a la fin de chaque régle. Cela signifie que quand il en a trouvé une qui correspond, il va pas voir les autres.

Code:
# rss/membre/tag
RewriteRule ^(rss)/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ rss.php?user=$2&tag=$3 [L]
# rss/membre 
RewriteRule ^(rss)/([a-zA-Z0-9]*)$ rss.php?user=$2 [L]
# rss
RewriteRule ^(rss)$ rss.php [L]
 
WRInaute passionné
Merci pour ta proposition et bienvenue à toi sur WRI :wink:
Malheureusement, cette modif ne fait rien de plus...

D'autres idées ?
 
WRInaute passionné
Bon, toujours rien même en changeant l'ordre...

Sinon, ben je vais attendre que tout tourne avant de le lancer :wink:
 
WRInaute passionné
bertimus a dit:
Bon, toujours rien même en changeant l'ordre...

Sinon, ben je vais attendre que tout tourne avant de le lancer :wink:

Si tu es chez OVH entre autres :

Code:
# rss/membre/tag 
RewriteRule ^(rss)/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ /rss.php?user=$2&tag=$3 
# rss/membre 
RewriteRule ^(rss)/([a-zA-Z0-9]*)$ /rss.php?user=$2 
# rss 
RewriteRule ^(rss)$ /rss.php
 
WRInaute passionné
Ben oui mais non, toujours rien, merci quand même !

[Petit Cri pour me détendre]
AaaaaAaaaaaAAAAaaaaaaaaaaAAAAAAArrRRrrrrrrrrRRRRRgggggggHHHHHHhhhhhHHHHHHHH
[/Petit Cri pour me détendre]
 
WRInaute passionné
bertimus a dit:
Ben oui mais non, toujours rien, merci quand même !

[Petit Cri pour me détendre]
AaaaaAaaaaaAAAAaaaaaaaaaaAAAAAAArrRRrrrrrrrrRRRRRgggggggHHHHHHhhhhhHHHHHHHH
[/Petit Cri pour me détendre]

Celui-là ne te posera aucun conflit ; promis 8)

Code:
# rss/membre/tag 
# RewriteRule ^(rss)/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ rss.php?user=$2&tag=$3 
# rss/membre 
# RewriteRule ^(rss)/([a-zA-Z0-9]*)$ rss.php?user=$2 
# rss 
# RewriteRule ^(rss)$ rss.php
 
WRInaute passionné
plus sérieusement...

Je viens de m'apercevoir que tu écrit :

:arrow: ^(rss)/blabla...

ce ne serait pas plûtot :

:arrow: ^http://www.exemple.com/rss/blabla ??

ou plus simplement peut-être :

:arrow: rss/blabla ??

^ Ceci indique le début de la chaîne
 
WRInaute passionné
Non non ça fait rien de plus... Je baisse les bras et retiens ton avant dernière solution ;)

Merci pour ton assistance et bonne continuation !

Bertrand
 
WRInaute impliqué
RewriteRule ^rss/([a-zA-Z0-9]*)$/([a-zA-Z0-9]*)$ /rss.php?user=$1&tag=$2 [QSA,L]
RewriteRule ^rss/([a-zA-Z0-9]*)$ /rss.php?user=$1 [QSA,L]
RewriteRule ^rss$ /rss.php [QSA,L]
 
WRInaute passionné
Non désolé mais ce n'est pas aussi simple que ça... Avec ou sans [QSA,L] ou [L], le problème persiste.

D'autres propositions ?

[Mon .htaccess est à la racine du sous dossier]
[Je peux bien sûr fournir mon MSN en MP et/ou vous donner le .htaccess complet]
 
WRInaute passionné
Tilt a dit:
Alors on part de ça:

# rss/membre/tag
RewriteRule ^(rss)/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ rss.php?user=$2&tag=$3 [L]
# rss/membre
RewriteRule ^(rss)/([a-zA-Z0-9]*)$ rss.php?user=$2 [L]
# rss
RewriteRule ^(rss)$ rss.php [L]

Pour commencer, que se passe-t'il lorsque tu ôtes la dernière règle ?

Ca ne change malheureusement rien, l'url http://www.example.com/rss passe toujours et appelle rss.php
 
Nouveau WRInaute
mon avis

il faut bien le [L] a la fin des lignes...

est-ce que la premiere ligne seule fonctionne ???

peut etre que les deux premieres lignes ne fonctionnent pas et que du coup c'est toujours la derniere qui est prise
 
Nouveau WRInaute
bertimus a dit:
Tilt a dit:
Alors on part de ça:

# rss/membre/tag
RewriteRule ^(rss)/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ rss.php?user=$2&tag=$3 [L]
# rss/membre
RewriteRule ^(rss)/([a-zA-Z0-9]*)$ rss.php?user=$2 [L]
# rss
RewriteRule ^(rss)$ rss.php [L]

Pour commencer, que se passe-t'il lorsque tu ôtes la dernière règle ?

Ca ne change malheureusement rien, l'url http://www.example.com/rss passe toujours et appelle rss.php


est ce que la requette http://www.example.com/rss// fonctionne mieux ??
 
Nouveau WRInaute
reseau-emploi a dit:
bertimus a dit:
Tout à fait... Tout comme http://www.example.com/rss////////// d'ailleurs ;)


si elle fonctionne mieux... l'explication est simple : la premiere requette
n'est pas prise car elle necessite obligatoirement d'avoir les deux slash...

RewriteRule ^(rss) / ([a-zA-Z0-9]*) / ([a-zA-Z0-9]*)$ rss.php?user=$2&tag=$3 [L]

ru devrais indiquer que ceux ci sont optionnels

essaie :

RewriteRule ^(rss)/?([a-zA-Z0-9]*)/?([a-zA-Z0-9]*)$ rss.php?user=$2&tag=$3 [L]
 
WRInaute accro
Bonjour,
Essai ça :
Code:
RewriteRule ^xml-([a-zA-Z0-9]*)-([a-zA-Z0-9]*).php$ rss.php?user=$2&tag=$3 [L]
RewriteRule ^xml-([a-zA-Z0-9]*).php$ rss.php?user=$2 [L]
RewriteRule ^xml.php$ rss.php [L]
Sinon essai en rajoutant ton -http://machinchose devant l'URL à réécrire.
3ème essai indique [R,L] en bout de ligne.
@+
 
WRInaute passionné
reseau-emploi a dit:
essaie :

RewriteRule ^(rss)/?([a-zA-Z0-9]*)/?([a-zA-Z0-9]*)$ rss.php?user=$2&tag=$3 [L]
Arf, pas mieux...

serval2a a dit:
Bonjour,
Essai ça :
Code:
RewriteRule ^xml-([a-zA-Z0-9]*)-([a-zA-Z0-9]*).php$ rss.php?user=$2&tag=$3 [L]
RewriteRule ^xml-([a-zA-Z0-9]*).php$ rss.php?user=$2 [L]
RewriteRule ^xml.php$ rss.php [L]
Sinon essai en rajoutant ton -http://machinchose devant l'URL à réécrire.
3ème essai indique [R,L] en bout de ligne.
@+

Marche pas non plus. AAaaaaaaaaaRRRRRRRrrrrrrrrrGGGGGGGGhhhhhh bis (pardon).

Hum, je commence à douter... vu que rss.php?user=bertrand&tag=web et rss.php?user=bertrand passent, le problème ne peut bien venir que de mon .htaccess non ?

Sinon, info complémentaire, script source où ça passe nickel (avec le même rewriting) : -http://taggle.de
 
Nouveau WRInaute
Re: Conflit entre 3 règles d'URL rewriting

ton code original:
Code:
# rss/membre/tag
RewriteRule ^(rss)/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ rss.php?user=$2&tag=$3
# rss/membre
RewriteRule ^(rss)/([a-zA-Z0-9]*)$ rss.php?user=$2
# rss
RewriteRule ^(rss)$ rss.php


Mais au fait, pourquoi tu veux mettre le rss entre parenthese ???
et pas ^rss
 
Nouveau WRInaute
Re: Conflit entre 3 règles d'URL rewriting

reseau-emploi a dit:
ton code original:
Code:
# rss/membre/tag
RewriteRule ^(rss)/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ rss.php?user=$2&tag=$3
# rss/membre
RewriteRule ^(rss)/([a-zA-Z0-9]*)$ rss.php?user=$2
# rss
RewriteRule ^(rss)$ rss.php


Mais au fait, pourquoi tu veux mettre le rss entre parenthese ???
et pas ^rss

essaie ca...


# rss/membre/tag
RewriteRule ^rss/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ rss.php?user=$1&tag=$2
# rss/membre
RewriteRule ^rss/([a-zA-Z0-9]*)$ rss.php?user=$1
# rss
RewriteRule ^rss$ rss.php
 
WRInaute passionné
Toujours rien de plus...

Hum, c'est sûr, je vous ai mangé plus de 5 minutes à chacun d'en vous, vous pouvez arrêter là si vous voulez et peu importe le résultat, je vous remercie pour l'ensemble de vos propositions :wink:
 
Nouveau WRInaute
bertimus a dit:
Toujours rien de plus...

Hum, c'est sûr, je vous ai mangé plus de 5 minutes à chacun d'en vous, vous pouvez arrêter là si vous voulez et peu importe le résultat, je vous remercie pour l'ensemble de vos propositions :wink:


ca c'est un message poli... pour dire qu'on a ete naze mais bien gentil...
:roll:

Tu as raison...
Mais en fait pour ton probleme... il faudrait avoir ton serveur sous la main pour essayer...
 
WRInaute passionné
Wola non, je suis loin de ne penser que vous étiez naz'. C'est moi le plus naz' du lot là en matière de rewriting. Je voulais juste ne pas vous faire perdre plus de votre temps, c'est tout :wink:

OK, je suis prêt à filer l'accès à mon FTP à l'un d'entre vous mais pas de bêtises hein :wink:
 
WRInaute impliqué
Tilt a dit:
Pour commencer, je remplacerais les * (qui acceptent les chaînes vides) par des +:
plus qq autres modifs, ça donnerait:

RewriteRule ^rss/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ /rss.php?user=$1&tag=$2 [QSA,L]
RewriteRule ^rss/([a-zA-Z0-9]+)/?$ /rss.php?user=$1 [QSA,L]
RewriteRule ^rss/?$ /rss.php [QSA,L]


Ca a l'air de marcher maintenant (???):
P. ex.:
-http://www.taggle.de/rss/ba/web
 
WRInaute passionné
Extrait d'un échange avec Netsys en MP qui me permet d'éclaircir mon problème :
netsys a dit:
Salut !

J'ai effectué quelques tests sur mon seveur et j'ai obtenu des résultats convaincants avec ceci :

Code:
RewriteEngine on

RewriteRule ^rss/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ aaa.html [QSA,L]
RewriteRule ^rss/([a-zA-Z0-9]*)$ bbb.html [QSA,L]
RewriteRule ^rss$ ccc.html [QSA,L]

Je tombe sur la page
aaa.html avec -http://www.example.com/test/rss/aaa/bbb
bbb.html avec -http://www.example.com/test/rss/aaa
ccc.html avec -http://www.example.com/test/rss

Donc avec ceci ca devrait marcher :
Code:
RewriteEngine on

RewriteRule ^rss/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ rss.php?user=$1&tag=$2 [QSA,L]
RewriteRule ^rss/([a-zA-Z0-9]*)$ rss.php?user=$1 [QSA,L]
RewriteRule ^rss$ rss.php [QSA,L]

Tiens moi au courant si cela fonctionne ou quelles sont les erreurs sinon.

A+
Netsys

Il apparaît que rss appelle toujours rss.php

Si dans ton exemple je mets plutôt
Code:
RewriteRule ^rss123/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ aaa.html [QSA,L]
RewriteRule ^rss123/([a-zA-Z0-9]*)$ bbb.html [QSA,L]
RewriteRule ^rss123$ ccc.html [QSA,L]

Là ça marche nickel, mais si je laisse rss ça passe pas (et ramène toujours vers rss.php)...

Quelqu'un y voit de nouvelles pistes ?
 
WRInaute passionné
J'ai trouvé !!!! Tititu Tititutu, Tititu, Tititutu

Ecrire mon précédent post m'a permis de remettre à plat mon problème...

La solution ?

Ben c'est tout con : renommer rss.php
[oui oui c'est tout :roll:]
en rss123.php par exemple à la racine et dans le .htaccess, ça donne juste :

Code:
RewriteRule ^(rss)/([a-zA-Z0-9]*)/([a-zA-Z0-9]*)$ rss123.php?user=$2&tag=$3
RewriteRule ^(rss)/([a-zA-Z0-9]*)$ rss123.php?user=$2
RewriteRule ^rss$ rss123.php

et là ça passe nickel ! C'est déplorable non de se casser autant la tête pour arriver à cette solution simplissime ?

L'un d'entre vous a une explication rationnelle par contre ? Ca m'intéresse.

Bon, hum, personne ne m'avait proposé de renommer mon fichier rss.php donc pas de gagnant du lien PR5...

Nan, je déconne, j'offre le lien PR 5 à Netsys (qui m'a permis de développer ma réflexion) et réserve un lien Pr 4 (où y'aura 3 liens extérieurs max) à tous ceux qui ont participé : bgdc, medium69, Tilt, reseau-emploi, serval2a, wullon (hum, j'en oublie là ?)

Faites votre choix sur l'une des 60 pages de -www.obonplan.com (chacune étant liée à un thème particulier)

Bref bref, bilan : des heures de flip', à remettre en cause mon projet mais belle récompense avec la solution (toute simple)... ouf !

Lancement prévu dans une semaine donc.

Merci à tous !

Bertrand
 
WRInaute accro
Ha, j'en suis sûr alors maintenant, c'est à cause d'une fonctionnalité dont j'oublie toujours le nom et qui se trouve dans le <edit>httpd.conf</edit>, qui permet avec le fichier exemple.php de trainer les urls /exemple/etc... Elle doit rentrer en conflit avec l'UR (et pas être activée sur taggle.de).

Alors, je suppose qu'il suffit :
- soit de désactiver cette fonctionnalité si tu le peux
- soit de renommer ton rss.php en un truc du genre rss2.php
 
WRInaute passionné
bertimus a dit:
j'offre le lien PR 5 à netsys (qui m'a permis de développer ma réflexion) et réserve un lien Pr 4 (où y'aura 3 liens extérieurs max) à tous ceux qui ont participé : bgdc, Tilt, reseau-emploi, serval2a, wullon (hum, j'en oublie là ?

Merci pour le lien ;-) c'est sympa !
Au fait peux-tu éditer ton message ou se trouve mon exemple et désactiver les liens vers mes pages dans l'UR !
 
WRInaute accro
Oui, merci pour le lien, ça fait plaisir (au début je pensais dire non mais finalement :p).

Et surtout, bonne chance à ton site :p.
 
WRInaute passionné
J'attends vos chois de pages et vos codes pour les petits BL, sauf pour toi wullon :wink:

@ serval2a : Ah oui c'est vrai t'étais pas loin du tout, à 50% en fait, tu mérites tout autant un BL sur ma page d'accueil PR 5 :wink:

@ Netsys : oops, sorry, c'est réglé
 
Nouveau WRInaute
bertimus a dit:
J'attends vos chois de pages et vos codes pour les petits BL, sauf pour toi wullon :wink:

@ serval2a : Ah oui c'est vrai t'étais pas loin du tout, à 50% en fait, tu mérites tout autant un BL sur ma page d'accueil PR 5 :wink:

@ Netsys : oops, sorry, c'est réglé

je t'envoie le lien en MP pour le backlink PR4, merci... je ne le méritais pas...
Mais j'apprécie le lien et ca fera du bien a mon site géré bénévolement
pour l'emploi (aucune pub pour le rentabiliser)
 
WRInaute passionné
Mais c'est un plaisir pour moi égalment, t'as tenté de m'aider, tu le mérites ! Et puis bon, c'est un petit geste qui ne me coûte absolument rien ;)
 
WRInaute impliqué
wullon a dit:
Ha, j'en suis sûr alors maintenant, c'est à cause d'une fonctionnalité dont j'oublie toujours le nom et qui se trouve dans le php.ini, qui permet avec le fichier exemple.php de trainer les urls /exemple/etc... Elle doit rentrer en conflit avec l'UR (et pas être activée sur taggle.de).

Alors, je suppose qu'il suffit :
- soit de désactiver cette fonctionnalité si tu le peux
- soit de renommer ton rss.php en un truc du genre rss2.php

Si tu retrouve cela est bien interessant, je dois dire que j'ai eu beau me creuser le neurone ce matin, j'ai toujours pas compris d'ou cela vient !
Merci
 
Discussions similaires
Haut