OVH Cloud OVH Cloud

Petit probleme d'url rewriting

6 réponses
Avatar
Nicolas Moreau
'jour le groupe,

j'ai un dossier "themes" dans le quel j'ai un script php, celui-ci
affiche des articles suivant le theme choisi, et il peut les trier
suivant un critère optionnel,

avec l'url rewriting, j'aimerai bien arriver à cela :


example.com/themes/couture ou example.com/themes/couture/
=> example.com/script.php?theme=couture

example.com/themes/couture/couleur ou example.com/themes/couture/couleur/
=> example.com/script.php?theme=couture&critere=couleur


pour l'instant j'en suis là :

(dans /themes/)
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([^/]+)/$ themes.php?theme=$1 [L]

Le problème c'est que je n'arrive pas à faire prendre en compte
themes/machin ET themes/machin/ (alors pour rajouter le critère en plus,
je suis perdu :)

des idées ?

--
Nicolas Moreau

6 réponses

Avatar
Steph. k.
Nicolas Moreau wrote:
'jour le groupe,

j'ai un dossier "themes" dans le quel j'ai un script php, celui-ci
affiche des articles suivant le theme choisi, et il peut les trier
suivant un critère optionnel,

avec l'url rewriting, j'aimerai bien arriver à cela :


example.com/themes/couture ou example.com/themes/couture/
=> example.com/script.php?theme=couture

example.com/themes/couture/couleur ou
example.com/themes/couture/couleur/ =>
example.com/script.php?theme=couture&critere=couleur


pour l'instant j'en suis là :

(dans /themes/)
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([^/]+)/$ themes.php?theme=$1 [L]

Le problème c'est que je n'arrive pas à faire prendre en compte
themes/machin ET themes/machin/ (alors pour rajouter le critère en
plus, je suis perdu :)

des idées ?



Ilme semble que tu devrais y trouver ton bonheur :
http://www.expreg.com/rewrite.php

--
Steph. K.
http://www.acces-pour-tous.net
"C'est au pied du mur qu'on voit mieux le mur."
Avatar
Nicolas Moreau
Steph. k. wrote:

Le problème c'est que je n'arrive pas à faire prendre en compte
themes/machin ET themes/machin/ (alors pour rajouter le critère en
plus, je suis perdu :)




Ilme semble que tu devrais y trouver ton bonheur :
http://www.expreg.com/rewrite.php



Merci, mais en fait non :)

en fait j'arrive à rediriger
themes/untheme/ et themes/untheme/uncritere/

grâce à

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([^/]+)/([^/]+)/$ test.php?theme=$1&critere=$2&regle=1 [L]

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([^/]+)/$ test.php?theme=$1&regle=2 [L]


mon problème c'est la prise en compte de
themes/untheme et themes/untheme/uncritere

Le truc que je ne comprends pas, c'est qu'en doublant ces deux regles
pour enlever le slash final :

--DEBUT--
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([^/]+)/([^/]+)/$ test.php?theme=$1&critere=$2&regle=1 [L]

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([^/]+)/$ test.php?theme=$1&regle=2 [L]

RewriteEngine on
RewriteRule ^([^/]+)/([^/]+)$ test.php?theme=$1&critere=$2&regle=3 [L]

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([^/]+)$ test.php?theme=$1&regle=2&regle=4 [L]
--FIN--

et en mettant un print_r($_GET), j'obtiens pour les quatre cas :

Array
(
[theme] => test.php
[regle] => 4
)

(alors que ca redirige bien sur test.php)


(au secours !)

--
Nicolas Moreau
Avatar
Salagir
On Mon, 03 Nov 2003 14:19:37 +0100, in fr.comp.infosystemes.www.auteurs,
Nicolas Moreau wrote:
RewriteEngine on
RewriteRule ^([^/]+)/$ themes.php?theme=$1 [L]

Le problème c'est que je n'arrive pas à faire prendre en compte
themes/machin ET themes/machin/



Le point d'interrogation en regexp veut dire "une ou zero fois le
caractère précédent"

donc
RewriteRule ^([^/]+)/?$ themes.php?theme=$1 [L]

devrait gérer le slash final qu'il soit là ou pas

--
++++++++ Zelda, Dragon Ball, Mana and my (art)work at www.salagir.com ++++++++
Space. It seems to go on and on forever. But then you get to the end
and a gorilla starts throwing barrels at you. -+- Fry in Futurama -+-
Avatar
Nicolas Moreau
Salagir wrote:


Le problème c'est que je n'arrive pas à faire prendre en compte
themes/machin ET themes/machin/




RewriteRule ^([^/]+)/?$ themes.php?theme=$1 [L]

devrait gérer le slash final qu'il soit là ou pas



Quenini

j'avais testé avec /? et (/?) et ça fait le même comportement bizarre

Array
(
[theme] => test.php
[regle] => 2
)

--
Nicolas Moreau
Avatar
Thibaut Allender
Nicolas Moreau wrote:
RewriteRule ^([^/]+)$ test.php?theme=$1&regle=2&regle=4 [L]
--FIN--

et en mettant un print_r($_GET), j'obtiens pour les quatre cas :

Array
(
[theme] => test.php
[regle] => 4
)



hello,

tu n'as pas besoin de rediriger vers test.php?theme=$s&regle=$2&regle=$4

mais tout simplement vers test.php

dans test.php, tu te bases sur $_SERVER[REQUEST_URI] pour retrouver tes
parametres (ca revient a faire un regexp compliquee dans le php et non
dans la rewrite rule, ce qui est bcp plus souple et simple a modifier
(ca evite un restart apache a chaque essai ;))

donc ca revient a faire ceci en rewrite :

RewriteRule ^/themes/.*$ themes.php [L]

pour le slash final ou non, j'utiliserais [/]*$ a la fin de la regexp

a+

--
freelance + web design + php dev + digital photo
+ http://www.capsule.org
Avatar
Nicolas Moreau
Thibaut Allender wrote:


dans test.php, tu te bases sur $_SERVER[REQUEST_URI] pour retrouver tes
parametres
RewriteRule ^/themes/.*$ themes.php [L]



Ah pas con ça, ça marche impec merci :)


pour le slash final ou non, j'utiliserais [/]*$ a la fin de la regexp



si je le traite dans le script php, le slash final ne me pose plus de
problème

micii!

--
Nicolas Moreau