我遇到了一个问题模组重写 http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html当向我们的网站提交表单时 perl 脚本。如果有人在具有如下 url 的页面上执行 GET 请求http://www.example.com/us/florida/page-title
,我使用以下正确运行的重写规则重写它:
RewriteRule ^us/(.*)/(.*)$ /cgi-bin/script.pl?action=Display&state;=$1&page;=$2 [NC,L,QSA]
现在,如果该页面上有一个表单,我想将表单发布到相同的 url,并让 Mod Rewrite 使用相同的重写规则来调用相同的脚本并调用相同的操作。然而,正在发生的情况是,正在触发重写规则,正在调用正确的脚本,并且正在发布所有表单 POST 变量,但是,重写的参数(本例中的操作、状态和页面)并未传递给Perl 脚本。我对 GET 和 POST 请求使用相同的 Perl 代码来访问这些变量:
use CGI;
$query = new CGI;
$action = $query->param('action');
$state = $query->param('state');
$page = $query->param('page');
我添加了 QSA 标志,因为我认为这可能会解决问题,但事实并非如此。如果我直接对脚本 URL 执行 POST,那么一切都会正常工作。如果您能帮助我找出目前不起作用的原因,我将不胜感激。提前致谢!
如果您正在进行 POST 查询,则需要使用$query->url_param('action') http://search.cpan.org/perldoc/CGI#MIXING_POST_AND_URL_PARAMETERS等等从查询字符串中获取参数。您不需要或受益于 QSA 修改器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)