On Mar 6, 2015, at 5:29 PM, David E. Wheeler <[email protected]> wrote:
> And now it works just how I want.
I take it back. It works for files in the root, but not subdirectories.
So say my document root is /var/html, and a request comes in for /foo/bar.html.
Apache has mapped it to /var/html/foo/bar.html, but in my PerlTypeHandler, I
re-map it to /var/html/david/foo/bar.html and set finfo:
sub handler {
my $r = shift;
# We only want to do this once per request.
return DECLINED unless $r->is_initial_req;
# Get the username.
my $user = $r->user or return HTTP_UNAUTHORIZED;
# Return forbidden if the subscriber ID subdirectory does not exist.
my $doc_root = $r->document_root;
my $sub_root = File::Spec->catdir($doc_root, $user);
return HTTP_FORBIDDEN unless -d $sub_root;
# Set the filename.
my $file = File::Spec->catfile($sub_root, substr $r->uri, 1);
$r->filename($file);
$r->finfo(APR::Finfo::stat($file, APR::Const::FINFO_NORM, $r->pool));
return DECLINED;
}
I have no PerlReponseHandler, so Apache handles the response…and returns 404.
Note that a request for /hi.txt; it’s only a request in a subdirectory,
/foo/bar.html, that fails. Why? Why isn’t Apache able to find that file? Is
there some other attribute of $r I need to set or unset?
Thanks,
David
smime.p7s
Description: S/MIME cryptographic signature
