我使用一個簡單的Web應用程序一個土生土長的小CGI路由器,代碼可以在這裏找到在github的Perl CGI返回404
web應用程序有一個登錄表單如
my $form = start_form(-method => 'post', -action => '/login');
$form .= p(label('Mail'), textfield(-name => 'mail'));
$form .= p(label('Mail'), password_field(-name => 'pass'));
$form .= p(submit(-value => 'Log ind', -class => 'button button-primary'));
$form .= end_form();
和我有一個路由器處理POST請求這樣
$router->add_route('POST', '/login', sub {
if (param) {
# Get mail and pass
my $mail = $cgi->param('mail');
my $pass = $cgi->param('password');
# Check against user table
# Set cookie and redirect to admin
}
# Otherwise redirect to /login
print redirect(-url => '/login');
});
在我當地的環境,OSX 10.10.3,Perl的5,18版,顛覆2(v5.18.2),這是工作像預期,我提交表格並處理登錄,沒問題。
我的生產環境是Microsoft-IIS/5.0根據ENV {「SERVER_SOFTWARE」}
在生產環境中返回一個404,不幸的是我無法得到我的手,可以顯示任何日誌文件有用的東西。
在生產和當地環境.htaccess文件
# RewriteBase/
DirectoryIndex index.pl index.phtml index.html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.pl [L,QSA]
謝謝,我寫CGI ::路由器主要是爲了好玩,它永遠不會服務於任何關鍵,但感謝您的反饋 –