Проблема с именем файла, содержащим "-" в PERL - PullRequest
1 голос
/ 06 июля 2011

Я создал файл с именем «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, в котором говорится: «Документ перемещен сюда». Но когда я переименовываю тот же файл, просто удалив в нем «-», т. Е. Новое имя файла «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,<em>/</em>;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</p> <p>

И ОТВЕТНЫЕ ЗАГОЛОВОКИ пустые.

1 Ответ

6 голосов
/ 06 июля 2011

Во-первых, некоторые веб-серверы обрабатывают сценарии cgi, начинающиеся с 'nph-', по-другому, чем любой другой сценарий 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); 
...