On Wed 25 Jun 2008, titetluc titetluc wrote: > PerlModule Test > <Location /test_index/index.html> > Require valid-user > AuthType basic > AuthName test_index > SetHandler perl-script > > PerlAuthenHandler Apache2::AuthSSO::Test->set_user > > PerlResponseHandler Apache2::AuthSSO::Test->display_user > </Location> > > In addition, I added an empty index.html file in the htdocs/test_index > directory > > The Perl Test module is > > package Test; > use warnings; > use strict; > use Carp; > > use Apache2::Const qw(:common); > > sub set_user { > my ($self, $r) = @_; > $r->user('myself'); > return OK; > } > sub display_user { > my ($self, $r) = @_; > my $user = defined $r->user ? $r->user : 'user is not defined'; > print $user; > return OK; > } > > 1; > > When I access with my browser to http://localhost/test_index/index.html, > user is set to 'myself' > BUT when I access with my browser to http://localhost/test_index/ ... user > is not defined !!!
What happens here? When you access .../index.html your main request matches the location condition and is served accordingly. If you access .../ the main request goes through all phases up to fixup missing the location directives because the condition does not match. In fixup mod_dir creates an URI subreq for each DirectoryIndex. mod_dir.c contains the following code: /* The sub request lookup is very liberal, and the core map_to_storage * handler will almost always result in HTTP_OK as /foo/index.html * may be /foo with PATH_INFO="/index.html", or even / with * PATH_INFO="/foo/index.html". To get around this we insist that the * the index be a regular filetype. * * Another reason is that the core handler also makes the assumption * that if r->finfo is still NULL by the time it gets called, the * file does not exist. */ if (rr->status == HTTP_OK && ( (rr->handler && !strcmp(rr->handler, "proxy-server")) || rr->finfo.filetype == APR_REG)) { ap_internal_fast_redirect(rr, r); return OK; } You see, for the DirectoryIndex feature to work properly the index document has to have an associated file. Your index document is a PerlResponseHandler. So, I suspect there is no index.html file. In that case $r->filename is "/path/to/test_index" and $r->path_info "index.html" for the subreq. Use the source, Luke! Now, I think you can make it working in one of these ways: 1) create .../test_index/index.html as a regular file. 2) redirect /test_index/index.html to a file (Alias ....). Torsten -- Need professional mod_perl support? Just hire me: [EMAIL PROTECTED]