| package Apache::RedirectLogFix; |
| |
| use Apache::Constants qw(OK DECLINED REDIRECT); |
| |
| sub handler { |
| my $r = shift->last; |
| return DECLINED unless $r->handler && ($r->handler eq "perl-script"); |
| |
| if(my $loc = $r->header_out("Location")) { |
| if($r->status == 200 and substr($loc, 0, 1) ne "/") { |
| $r->status(REDIRECT); |
| return OK |
| } |
| } |
| return DECLINED; |
| } |
| |
| 1; |
| |
| __END__ |
| |
| =head1 NAME |
| |
| Apache::RedirectLogFix - Properly set redirect status for loggers |
| |
| =head1 SYNOPSIS |
| |
| PerlLogHandler Apache::RedirectLogFix |
| |
| =head1 DESCRIPTION |
| |
| Due the nature of how mod_perl handles redirects, the status code |
| is not properly logged. This module works around that bug until |
| mod_perl can deal with this. |
| |