Проблема с именем файла, содержащим "-" в PERL
Я создал файл с именем "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);
и после выполнения файла он выдает мне сообщение STATUS 302, в котором говорится: "Документ перемещен сюда". Но когда я переименовываю тот же файл, просто удалив в нем "-", т.е. новое имя файла - "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
И ОТВЕТНЫЕ ЗАГОЛОВОКИ пустые.
1 ответ
Во-первых, некоторые веб-серверы обрабатывают сценарии cgi, начинающиеся с nph-, иначе, чем любой другой сценарий cgi, поэтому удаление - изменит это.
Вы звоните перенаправить неправильно; Все именованные параметры CGI должны начинаться с - вот так:
print $cgi->redirect(-uri => 'http://perl.about.com/');
С uri
вместо -uri
, он использует позиционные параметры, поэтому он пытается перенаправить на "URL" (который ваш веб-сервер может полностью соответствовать вашим требованиям).
Если вы собираетесь использовать nph-скрипт, установка опции nph для redirect предоставляет более полный набор заголовков; это может решить вашу проблему:
print $cgi->redirect(-uri => 'http://perl.about.com/', -nph => 1);