![]() |
|
|
#1 |
|
Membre
Date d'inscription: novembre 2011
Messages: 236
|
Variables POST perdus lors d'un url rewrite
Bonjour,
J'aimerais bien avoir un url rewrite sur un formulaire. J'ai essaye une directive mais les variables POST sont perdues et le formulaire n'est donc pas accepte. J'ai publie le probleme a http://www.sitepoint.com/forums/show...rameters/page2 mais sans succes pour le moment. Pour resumer, j'ai deux directives, une pour changer user/login en engine/modules/user/login.php La voila: RewriteRule ^user/login$ engine/modules/user/login.php Et une autre, (celle qui ne marche pas comme je voudrais) pour changer engine/modules/user/login.php en user/login La voila: RewriteCond %{IS_SUBREQ} false RewriteRule ^engine/modules/user/login\.php$ user/login [R=301,P] Le probleme avec cette seconde directive est que les variables POST sont perdus lors du rewrite. |
|
|
|
|
|
#2 | ||
|
Membre
Date d'inscription: décembre 2009
Messages: 1 192
|
Re : Variables POST perdus lors d'un url rewrite
J'ai l'impression qu'il y a confusion.
Tu veux faire de la ré-écriture d'url ou une redirection ? Dans le second cas : Citation:
Citation:
__________________
Sauvegardez vos données et stockez les en dehors de votre serveur ! Question courte = réponse courte |
||
|
|
|
|
|
#3 |
|
Membre
Date d'inscription: novembre 2011
Messages: 236
|
Re : Variables POST perdus lors d'un url rewrite
Effectivement, c'est une redirection, et ca explique la perte des variables post. Y aurait il moyen de faire unere-ecriture d'url alors ?
Merci ! |
|
|
|
|
|
#4 | |
|
Membre
Date d'inscription: décembre 2009
Messages: 1 192
|
Re : Variables POST perdus lors d'un url rewrite
Si tu veux faire une ré-écriture d'url, l'adresse ne va pas changer dans la barre d'adresse du navigateur. On est bien d'accord.
Et bien tu peux prendre exemple sur ta première ré-écriture qui semble fonctionner. Citation:
engine/modules/user/login.php doit correspondre à user/login mais user/login doit appeler engine/modules/user/login.php Ça ne peut pas marcher. Si tu veux ré-écrires tes url, c'est pour communiquer des adresses propres, lisibles. Donc il n'y a aucune raison d'écrire engine/modules/user/login.php dans un script, un formulaire ou une page web. Tu dois écrire ton formulaire pour qu'il envoi les données vers user/login
__________________
Sauvegardez vos données et stockez les en dehors de votre serveur ! Question courte = réponse courte |
|
|
|
|
|
|
#5 |
|
Membre
Date d'inscription: novembre 2011
Messages: 236
|
Re : Variables POST perdus lors d'un url rewrite
Et bien la directive
Code:
RewriteRule ^user/login$ engine/modules/user/login.php Et la directive Code:
RewriteRule ^engine/modules/user/login\.php$ user/login [R=301,P] Cette seconde directive etant une redirection, on perd alors les parametres du post. Une solution, comme tu l'indiques, est d'avoir l'url user/login dans l'attribut action du formulaire. Mais cela rend le script dependant de la presence du module url rewrite et je suis un peu reticent devant cette dependance.. peut-etre a tort ? |
|
|
|
|
|
#6 | |
|
Membre
Date d'inscription: décembre 2009
Messages: 1 192
|
Re : Variables POST perdus lors d'un url rewrite
Citation:
L'url rewrite est un composant essentiel et indispensable de ton application. Pourquoi serais-tu amené à le désactiver ? La meilleur façon pour que l'url réelle ne soit pas utilisée, c'est de ne jamais la communiquer à l'extérieure de ton application. Une bonne idée serait de générer tes urls de façon centralisée. Par exemple avec le framework Zend, on passe un tableau associatif à une fonction qui retourne l'url. Code:
$this->url(array('module'=> "myModule", 'controller'=> "myController", 'action'=> "myAction")) // Retourne ton url
__________________
Sauvegardez vos données et stockez les en dehors de votre serveur ! Question courte = réponse courte |
|
|
|
|
|
|
#7 |
|
Membre
Date d'inscription: novembre 2011
Messages: 236
|
Re : Variables POST perdus lors d'un url rewrite
Merci pour cette explication. Je crois que je vais integrer les urls dans les formulaires.
|
|
|
|
![]() |
| Outils de la discussion | |
|
|