1

我创建了一个名为“nph-select.pl”的文件,并将代码用于重定向,如下所示。

#!"D:\xampp\perl\bin\perl.exe" -w
use CGI qw/:standard/; 
my $cgi = new CGI; 
print $cgi->redirect(-uri => 'http://www.google.com/', -nph => 1); 

并执行文件然后它给我 302 STATUS 消息说“文档已移至此处”。但是当我通过删除“-”来重命名同一个文件时,即新文件名是“nphselect.pl”,那么它也可以通过重定向正常运行。有人可以建议我缺少什么设置吗?

我的请求标头是 Host localhost:8080 User-Agent Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Accept text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language en-us,en;q=0.5 Accept-Encoding gzip, deflate Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive 115 Connection keep-alive

并且 RESPONSE HEADERS 是空白的。

4

1 回答 1

6

首先,一些网络服务器对待以“nph-”开头的 cgi 脚本不同于任何其他 cgi 脚本,因此删除 - 将改变这一点。

您错误地调用了重定向;CGI 的命名参数都必须以 - 开头,如下所示:

print $cgi->redirect(-uri => 'http://perl.about.com/'); 

使用uri而不是-uri,它使用位置参数,因此它会尝试重定向到“url”(您的网络服务器可能完全符合您的条件)。

如果您打算使用 nph- 脚本,设置重定向的 nph 选项会提供更完整的标题集;这可能会解决您的问题:

print $cgi->redirect(-uri => 'http://perl.about.com/', -nph => 1); 
于 2011-07-06T08:16:47.217 回答