Forum OVH  

Précédent   Forum OVH > VPS
FAQ Guides Recherche Messages du jour Marquer les forums comme lus

Réponse
 
Outils de la discussion
Vieux 01/05/2012, 11h23   #1
stephaneeybert
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.
stephaneeybert est déconnecté   Réponse avec citation
Vieux 03/05/2012, 08h51   #2
gaboul49
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:
RewriteRule ^engine/modules/user/login\.php$ user/login [R=301,P]
n'est-ce pas une redirection ?

Citation:
[R] (force Redirect)
Redirect the URL to a external redirection
http://www.widexl.com/tutorials/mod_rewrite.html
__________________
Sauvegardez vos données et stockez les en dehors de votre serveur !
Question courte = réponse courte
gaboul49 est déconnecté   Réponse avec citation
Vieux 03/05/2012, 09h01   #3
stephaneeybert
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 !
stephaneeybert est déconnecté   Réponse avec citation
Vieux 03/05/2012, 09h06   #4
gaboul49
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:
RewriteRule ^user/login$ engine/modules/user/login.php
Par contre je ne comprend pas ce que tu peux faire.
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
gaboul49 est déconnecté   Réponse avec citation
Vieux 03/05/2012, 10h09   #5
stephaneeybert
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
permet a l'utilisateur de saisir l'url user/login et au serveur de trouver le script php correspondant.

Et la directive

Code:
RewriteRule ^engine/modules/user/login\.php$ user/login [R=301,P]
est la pour afficher l'url user/login meme si l'utilisateur saisi l'url engine/modules/user/login.php

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 ?
stephaneeybert est déconnecté   Réponse avec citation
Vieux 03/05/2012, 10h18   #6
gaboul49
Membre
 
Date d'inscription: décembre 2009
Messages: 1 192
Re : Variables POST perdus lors d'un url rewrite

Citation:
Envoyé par stephaneeybert Voir le message
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 ?
Tout comme le référencement de ton site dépend de l'url rewrite.
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
gaboul49 est déconnecté   Réponse avec citation
Vieux 03/05/2012, 20h11   #7
stephaneeybert
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.
stephaneeybert est déconnecté   Réponse avec citation
Réponse

Outils de la discussion

Règles de messages
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non



Fuseau horaire GMT +1. Il est actuellement 01h35.


© OVH 1999-2010