我使用一个简单的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 ::路由器主要是为了好玩,它永远不会服务于任何关键,但感谢您的反馈 –