J'ai rencontré un problème avec mod_rewrite lors de la soumission de formulaires à nos scripts perl de site. Si quelqu'un fait une requête GET sur une page avec une URL telle que http://www.example.com/us/florida/page-title
, je réécris que l'utilisation de la règle de réécriture suivante qui fonctionne correctement:Comment puis-je accéder aux paramètres transmis dans l'URL lorsqu'un formulaire est POSTé sur mon script?
RewriteRule ^us/(.*)/(.*)$ /cgi-bin/script.pl?action=Display&state=$1&page=$2 [NC,L,QSA]
Maintenant, si cette page a une forme à ce que je voudrais faites un post de formulaire sur le même URL et demandez à Mod Rewrite d'utiliser la même règle de réécriture pour appeler le même script et invoquer la même action. Cependant, ce qui se passe est que la règle de réécriture est déclenchée, le script correct est appelé et toutes les variables POST de formulaire sont affichées, cependant, les paramètres réécrits (action, page d'état & dans cet exemple) ne sont pas transmis au Script Perl. Je l'accès à ces variables en utilisant le même code Perl pour les requêtes GET et POST:
use CGI;
$query = new CGI;
$action = $query->param('action');
$state = $query->param('state');
$page = $query->param('page');
J'inclus le drapeau QSA car je pensais que cela pourrait résoudre le problème, mais il n'a pas fait. Si je fais un POST directement à l'URL du script, tout fonctionne correctement. J'apprécierais toute aide pour comprendre pourquoi cela ne fonctionne pas actuellement. Merci d'avance!
$ query-> url_param() a fait l'affaire. Je vidais initialement le paramètre $ query pour essayer de voir s'il était transmis à CGI.pm mais je suppose que les paramètres de l'URL POST ne font pas partie de l'objet $ query. Intéressant mais au moins j'ai maintenant la solution. Merci pour la réponse rapide Sinan! –
@Russell C. Je pense que vous devriez remercier @chaos. Maintenant, qui a baissé ma réponse? –
Oups. Nouveau ici. Je voulais dire, merci @chaos! –