Re: How Do I change the Document Root Per Request
"David E. Wheeler" <[email protected]>
| Newsgroups | gmane.comp.apache.mod-perl |
|---|---|
| Message-ID | <[email protected]> |
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
(application/pkcs7-signature, 4 KB) - not displayed