On Fri 28 Mar 2008, Valerio wrote:
> I set both document_root and filename: can I set just only the
> filename or the document-root or I have to set both them?


filename is just enough. You need to set docroot only if you have CGI scripts
or similar that use it. You can also set only docroot and return DECLINED.
The default trans handler then does the rest.

You may also want to cache your DB lookups at least for the duration of the
request. There are subrequests (when a directory index is created or mod_cgi
computes PATH_TRANSLATED or similar). Each one of those would repeat the DB
lookup otherwise.

sub handler {
my $r=shift;

my $vpath;
if( $r->prev ) { # handle subrequests
$vpath=$r->prev->notes->{vpath};
} elsif( $r->main ) { # handle internal redirects (ErrorDocument)
$vpath=$r->main->notes->{vpath};
} else {
$vpath=db_lookup(...);
$r->notes->{vpath}=$vpath;
}

$r->filename($vpath.$r->uri);
return Apache2::Const::OK;
}

Torsten