HTTP 오류 페이지를 자체적으로 생성하는 Perl의 CGI 스크립트가 있습니다. 헤더에 인쇄 된 HTTP 상태가 200과 다른 경우 (예 : 404), 아파치가를 추가 : 약간의 문제를 제외하고,ModPerl :: Registry를 사용하여 레거시 CGI 스크립트의 기본 mod_perl 오류 페이지를 표시하지 않는 방법
Alias /perl "/var/www/perl"
<Directory "/var/www/perl">
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options Indexes FollowSymlinks +ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
모든 것이 괜찮 : 나는 다음과 같은 아파치 구성을 사용하여, ModPerl::Registry를 통해 mod_perl을 아래를 실행하고 기본 HTML 오류 문서를 내 자신의 생성 된 응답. 예를 들어
테이크 다음과 같은 간단한 CGI 스크립트를
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:standard :escapeHTML -nosticky);
use CGI::Carp qw(fatalsToBrowser);
use Apache2::Const qw(:http :common);
our $cgi = CGI->new();
print $cgi->header(-type=>'text/html', -charset => 'utf-8',
-status=> '404 Not Found');
our $mod_perl_version = $ENV{'MOD_PERL'} ? " $ENV{'MOD_PERL'}" : '';
print <<"EOF";
<html>
<head>
<title>die_error_minimal$mod_perl_version
</head>
<body>
404 error
</body>
</html>
EOF
exit;
HTTP/1.1 404 Not Found
Date: Sun, 27 Nov 2011 13:17:59 GMT
Server: Apache/2.0.54 (Fedora)
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
<html>
<head>
<title>die_error_minimal mod_perl/2.0.1
</head>
<body>
404 error
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /perl/die_error_minimal.cgi was not found on this server.</p>
<hr>
<address>Apache/2.0.54 (Fedora) Server at localhost Port 80</address>
</body></html>
주에 결과 위에 언급 한 아파치 설정과 실행이와 위의 예제 CGI 스크립트에 exit;
를 교체하거나 return Apache2::Const::OK;
또는 return Apache2::Const::DONE;
, "How do I suppress the default apache error document in mod_perl?"에서 권장 한대로 도움이되지 않습니다. 결과는 동일하게 유지됩니다.
Apache 구성에서 무엇을 수정해야합니까? 또는 mod_perl/Apache가 추가 응답 페이지를 생성하지 못하도록 CGI 스크립트에 추가해야하는 항목은 무엇입니까?
. 어떤 ** 아파치 설정 **을 사용합니까? 내 것과 다른 경우 응답에 추가 할 수 있습니까? TIA. –
감사합니다. 작동합니다. –
불행히도 어떤 경우에는 (다른 사용자의 경우 읽기) 올바른 오류 정보 대신 HTTP 상태가 "200 OK"인 페이지를 전송하게됩니다. –