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

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:43
ouai toujours la meme erreur, j'ai tout essayé

sinon id ça peut etre du texte et des chiffres recuperer par une form

Me faudrais un truc du genre
Redirect test.php?id=$1 ^test/(.+)$

Je sais pas si la synthaxe est bonne
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:58
Redirect permanent test.php?id=(.+)$ /test/$1

j'me tire, ciao
bon rewrite lol
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
27 sept. 2008 à 11:44
Salut,

Est-ce que tu as désactivé Multiviews ?
Dans le .htaccess : Options -Multiviews
Ou alors dans la config d'Apache, peu importe.

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
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 à 16:15
ça marche tu es trop fort !!! :)

Par contre comment on fait pour acceder à /test/coucou sachant que coucou vient d'un input text d'une form ? (sans utiliser javascript ?)

ou alors faudrais faire des redirection de test.php?id=coucou vers /test/coucou
J'ai essayé dans le access mais j'ai pas reussi :(
0

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

Posez votre question
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
27 sept. 2008 à 17:24
J'ai simplement passé du temps à lire la doc du mod Rewrite d'apache.
Si tu vas jeter un oeil à la doc de Multiviews, tu verras pourquoi dans certains cas, il peut y avoir conflit. C'était le cas ici.

Je ne suis pas certain d'avoir bien compris ta question... Ce que tu veux, c'est que si un champ porte le nom coucou par exemple :

lors de l'envoi du formulaire, la valeur de ce champ soit passée sous la forme :
test/coucou/valeur_du_champ
C'est ça ? Parce que ça, c'est pas possible. Et à vrai dire, ça n'a pas de sens. C'est sûrement pour cela que ce n'est pas possible : la réécriture d'url répond à des besoins, de réorganisation de fichiers, de référencement. Organiser des données d'un formulaire (qui sont transparentes pour l'utilisateur lambda) c'est un peu vain et inutile...

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
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 à 17:37
en faite coucou c'est la valeur du champ donc /test/coucou equivaut à /test.php?id=coucou
C'est pas possible de rediriger /test.php?id=coucou vers /test/coucou ?
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
27 sept. 2008 à 18:57
J'en suis au même point de compréhension...
Si tu as un formulaire avec un seul champ qui s'appelle id, i ln'y a AUCUN intérêt à rediriger vers /test/coucou, si c'est pour ensuite réinterpréter l'url /test/coucou...

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
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 à 19:01
Va sur mininova fait une recherche et regarde l url tu comprendra peut etre mieux
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
27 sept. 2008 à 19:09
Ben ouais... T'as pas du bien regarder...

search/?search=simpsons

Y'a un ? que t'as pas du bien voir...
Le champ du formulaire s'appelle search, la valeur est simpsons.

On peut envoyer un formulaire vers une url de son choix (qui peut être réécrite si on veut) mais les données du formulaire, si elles sont envoyées en GET, sont passées OBLIGATOIREMENT sous la forme donnée=valeur&autre_donnée=autre_valeur
Si tu veux changer ça, il faut changer le comportement de ton navigateur. Développe alors une extension pour Firefox.

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
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 à 19:16
Non c'est .org le site je suis dessus la et c'est bien du style /search/simpsons
ça doit donc etre possible
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
27 sept. 2008 à 19:19
Mais ce n'est pas le résultat de la recherche via le formulaire, c'est une url écrite par le script PHP !

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
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 à 19:21
Donc le script fait une redirection vers /search/simpsons ensuite le htaccess reecrit l url c'est ça ?
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
27 sept. 2008 à 20:15
Non... Le script ne fait pas une recherche...
Le fonctionnement d'un formulaire html est déterminé par le standard du protocole HTTP. Le formulaire envoie les données encodées URL, c'est à dire sous forme de paires clé/valeur, séparées par des esperluettes (&). C'est la "Query String", qui est séparée de l'URL par un point d'interrogation. Un formulaire ne procède jamais à une quelconque réécriture. Il envoie les données conformément au standard du protocole HTTP, point barre.

Une URL de la forme www.unsiteauhasard.orr/search/simpsons a été écrite de la même manière que n'importe quel texte dynamique par un script côté serveur, afin de correspondre à une url de la forme www.unsiteauhasard.org/search.php?s=simpsons , qui sera interprétée plus tard par le fichier .htaccess, qui va interpréter l'url avant de la transmettre (sous sa nouvelle forme) au serveur http.
A partir du moment où le .htaccess interprète l'url, tout se passe du côté du serveur, rien ne se voit chez le client.

L'intérêt d'écrire (à l'initiative du serveur, pas du client) une URL réécrite de la forme www.unsiteauhasard.org/search/simpsons se trouve au niveau du référencement : un moteur de recherche interprètera /search/ comme étant un répertoire, et pourra organiser les différents éléments dans cette branche. Ca n'a pas d'autre utilité.

Ton formulaire, si l'attribut action="/search/"  et method="post" produira une URL :
www.tonsite.com/search/
Les données seront envoyées par POST, de manière transparente pour l'utilisateur. La réécriture d'URL, ici, tu t'en fous, sauf si tu souhaites que la page search.php ne soit pas connue comme telle, mais comme /search/
Pour ce qui est des données, il n'y a absolument AUCUN intérêt à les "cacher" en les mettant en forme d'une certaine manière.

Je sais pas si je suis clair, je fais de mon mieux...

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
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 à 20:26
Oui jsuis d'accord mais ce que je comprend pas c est comment ils font a partir du formulaire pour envoyer vers www.unsiteauhasard.org/search/simpsons
tu m'as dit que c'etait a partir du script search.php mais je vois pas trop comment ils obtiennent le /simpsons

En mettant action="/search/" on obtient www.tonsite.com/search/ et pas www.tonsite.com/search/simpsons
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
27 sept. 2008 à 20:35
Hum... Moi, quand je remplis le formulaire de recherche et que je clique, j'obtiens ce genre d'url :
www.site.org/search/?search=simpsons
Donc : le formulaire est envoyé en GET. Le navigateur va "url_encode" le champ. Si tu mets plusieurs mots dans le champ, ça donnera quelque chose comme ça :
www.site/org/search/?search=simpsons+le+film

On ne PEUT PAS empêcher le point d'interrogation.

<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
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 à 21:05
ok je vois donc on peut faire ça qu avec des liens et pas des form

J'ai compris merci :)
0
Rejoignez-nous