Probleme d url rewriting

adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 - 26 sept. 2008 à 19:13
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 - 27 sept. 2008 à 21:05
Bonjour,

J'aimerais faire un rewrite qui transforme www.site.com/test/coucou en www.site.com/test.php?id=coucou

J'ai donc mis
 RewriteRule ^test/(.+)$ test.php?id=$1? [L]

Et ça ne marche pas !

Par contre quand je met
 RewriteRule ^aze/(.+)$ test.php?id=$1? [L]
ou n'imoprte quoi autre que test ça marche

Je pense donc qu'il doit réecrire 2 fois l'url donc si vous avez une solution, n'hesitez pas ! :)

36 réponses

PlayerMania Messages postés 95 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 avril 2009
26 sept. 2008 à 21:33
RewriteRule ^([a-zA-Z0-9]+)\.html$ /test/test.php?id=$1 [L]

avec le htacces ds le rep /test/
cette regle autorise seulement tous les caractères de a à z et les chiffres ds l url de destination.

RewriteRule ^coucou\.html$ /test/test.php?id=coucou [L]
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
26 sept. 2008 à 22:39
c'est du rewrite, le dossier test n existe pas.
0
PlayerMania Messages postés 95 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 avril 2009
26 sept. 2008 à 22:49
RewriteRule ^test\/(.+)$ /test.php?id=$1 [L]
RewriteRule ^test\/coucou$ /test.php?id=coucou [L]
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
26 sept. 2008 à 22:57
La 1ere ligne ne marche pas, je ne vois pas trop pourquoi il y a un \
Je ne comprend pas la 2e ligne vu que coucou est une valeur variable de id
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PlayerMania Messages postés 95 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 avril 2009
26 sept. 2008 à 23:35
Tu dois échaper les caractères spéciaux propre au regex, tel que .  /  et bien d'autre

Essaye voir :

RewriteRule ^\/test\/(.+)$ /test.php?id=$1 [L]

Je n'ai jamais essayer de rewriter en creant un rep virtuel, et d'ailleur je suis pas sur que ce soit fesable.

Les regex sont ok, peu etre que l'absence d'extension ne lui plai pas

RewriteRule ^test\/(.*)$ /test.php?id=$1 [L]
RewriteRule ^\/test\/(.*)$ /test.php?id=$1 [L]
RewriteRule ^test\/(.*)\.html$ /test.php?id=$1 [L]
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
26 sept. 2008 à 23:39
Le slash est pas propre au RegEx

C'est possible de faire un rep virtuel vu que je l'ai fait en mettant "aze" a la place de "search".
Ce qui ne marche pas c'est quand je met search juste et je voudrais donc savoir comment faire pour que ça marche avec le meme nom que le fichier .php
0
PlayerMania Messages postés 95 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 avril 2009
26 sept. 2008 à 23:50
tu l'a enlever ton point d'intérogation qui traine a la fin.
et tu te trompe au sujet des regex.

^test\/([a-z]*)$ /test.php?id=$1 [L]
^test\/([a-z]*)\/$ /test.php?id=$1 [L]

monsite.com/test/coucou
monsite.com/test/coucou/

devrait fonctionner
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
26 sept. 2008 à 23:55
j'ai une erreur 500 avec ton code
0
PlayerMania Messages postés 95 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 avril 2009
27 sept. 2008 à 00:13
Bah apparament les regex ds un htaccess ne redoute pas le / direct, peu etre elle n'aime pas l' * non plus.

^test/([a-z]+)$ /test.php?id=$1 [L]
^test/([a-z]+)/$ /test.php?id=$1 [L]
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
27 sept. 2008 à 00:15
ça change rien vu que la chaine apres test/ n'est pas vide
0
PlayerMania Messages postés 95 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 avril 2009
27 sept. 2008 à 00:17
non, ce fameux echappement du / sors en faite du délimiteur que j'utilise dans mes regex, qui est /

/^test\/([a-z]+)$/

voila pkoi je l'echappe
0
PlayerMania Messages postés 95 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 avril 2009
27 sept. 2008 à 00:24
béh le rewritte est ok      ^test/([a-z]+)$

www.monsite.com/test.php?id=coucou      > Donne sur qqch ?
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
27 sept. 2008 à 00:27
bien sur que ça donne quelquechose mais le but c'est que www.monsite.com/test/coucou donne sur www.monsite.com/test.php?id=coucou et ça ça ne marche pas
sauf si on met un truc du genre www.monsite.com/blabla/coucou qui redirige vers www.monsite.com/test.php?id=coucou
0
PlayerMania Messages postés 95 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 avril 2009
27 sept. 2008 à 00:32
bah au pire fait que le rep est un nom different du fichier.
bizzard c't'affaire
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
27 sept. 2008 à 00:38
ouai on dirait qu'il rewrite 2 fois
en faite il fait
www.monsite.com/test/coucou vers www.monsite.com/test.php?id=coucou
ensuite il fait
www.monsite.com/test.php?id=coucou vers www.monsite.com/.php

du coup il me sort une 404

Sinon une autre question,

si je met www.monsite.com/test/coucou qui redirige vers www.monsite.com/test.php?id=coucou

comment je fais pour que quand on aille sur www.monsite.com/test.php?id=coucou on soit redirigé vers www.monsite.com/test/coucou ?
0
PlayerMania Messages postés 95 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 avril 2009
27 sept. 2008 à 00:55
tient bah c'est peu etre bien paske il ne trouve pas de slash derriere, tu as testé :
^test/([a-z]*)/$ /test.php?id=$1 [L]

essai voir pr etre sur que c pas autre chose qui bug :
^test/coucou/$ /test.php?id=coucou [L]
lance www.monsite.com/test/coucou/     >  error ?
-- OU --
^test/coucou$ /test.php?id=coucou [L]

lance www.monsite.com/test/coucou     >  error ?

ensuite essaye voir ça :
^test/([^/]*)/$ /test.php?id=$1 [L]
lance www.monsite.com/test/coucou/     >  error ?
[^/]*    >  prendra tout sauf un slash

pour la 2eme redirection, tu peu le faire ds la page elle meme selon l url consulté ou peu etre bien comme ça ds le htaccess :
^test.php?id=([a-z]*)$  /test/$1 [L]
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
27 sept. 2008 à 01:04
Nan j'ai des 404 a chaque fois

sinon la redirection ne marche pas

En faite j ai une form qui envoi vers test.php avec une variable id envoyé en get
donc je voudrais qu il redirige vers test/valeur_entree

L'autre solution serait de recuperer la valeur entree en js et d envoyé vers test/valeur_recuperer lorsqu on submit la form
mais j aurais preferé une solution plus euh ... stylée ! :)
0
PlayerMania Messages postés 95 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 avril 2009
27 sept. 2008 à 01:14
C'est ok pour ton form, bien en get comme tu dit, et qui pointe vers test.php
bizzard que ça foire

>>

Nan j'ai des 404 a chaque fois
Ces regles ne devrait pas planter, sinon c sur que t ira pas loins

^test/coucou$ /test.php?id=coucou [L]
lance www.monsite.com/test/coucou                 >  error ?
lance www.monsite.com/test.php?id=coucou     >  error ?

avec .html à la fin voir :
^test/coucou\.html$ /test.php?id=coucou [L]

lance www.monsite.com/test/coucou.html          >  error ?

lance www.monsite.com/test.php?id=coucou     >  error ?
0
adess00 Messages postés 261 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 27 septembre 2008 1
27 sept. 2008 à 01:22
ben le truc c est que si je met
RewriteRule ^test.php?id=(.+)$  test/$1
la page va bien s affichée mais dans l url j aurai test.php?id=blabla au lieu de test/blabla
c'est pourquoi je pense qu il faudrait faire une redirection
On peut le faire a partir du htaccess je pense ?
0
PlayerMania Messages postés 95 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 28 avril 2009
27 sept. 2008 à 01:33
ah vi la ca te changera pas l'url
oui tu peu faire des redirections via le htaccess, RedirectQQch me semble

quel genre de valeur tu passe à id ?

error ou pas sur le test de coucou en dur ?
0
Rejoignez-nous