DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=30718>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=30718 Allow mod_negotiation to work on URLs that map to directories Summary: Allow mod_negotiation to work on URLs that map to directories Product: Apache httpd-1.3 Version: 1.3.26 Platform: All OS/Version: All Status: NEW Severity: Enhancement Priority: Other Component: Other mods AssignedTo: [email protected] ReportedBy: [EMAIL PROTECTED] I would like to have the URLs .../foo and .../foo/bar both work, without the first redirecting to .../foo/. The most promising way to do this would be to use mod_negotiation, have a file foo.html, and a directory foo/ containing bar.html. This doesn't work, because mod_negotiation refuses to handle a request for which a filesystem object exists. This probably (?) makes sense if the object is a file, but I doubt anyone relies on this behavior when the object is a directory. Anyhow, I wrote a patch to let mod_negotiation handle directories. --- mod_negotiation.c.orig 2004-08-17 20:22:27.000000000 -0700 +++ mod_negotiation.c 2004-08-17 20:22:30.000000000 -0700 @@ -2613,7 +2613,8 @@ int res; int j; - if (r->finfo.st_mode != 0 || !(ap_allow_options(r) & OPT_MULTI)) { + if ((r->finfo.st_mode != 0 && ! S_ISDIR(r->finfo.st_mode)) + || !(ap_allow_options(r) & OPT_MULTI)) { return DECLINED; } I can't think of any other simple way to get the behavior I want. I could make it configurable if that would help. Apache 2 is the same, at a glance. A gross way to achieve my goal is the following module. #include "httpd.h" #include "http_config.h" module MODULE_VAR_EXPORT nodir_module; static int handle_nodir(request_rec *r) { if (S_ISDIR(r->finfo.st_mode)) r->finfo.st_mode = 0; return DECLINED; } module MODULE_VAR_EXPORT nodir_module = { STANDARD_MODULE_STUFF, NULL, /* initializer */ NULL, /* dir config creator */ NULL, /* dir merger --- default is to override */ NULL, /* server config */ NULL, /* merge server config */ NULL, /* command table */ NULL, /* handlers */ NULL, /* filename translation */ NULL, /* check_user_id */ NULL, /* check auth */ NULL, /* check access */ handle_nodir, /* type_checker */ NULL, /* fixups */ NULL, /* logger */ NULL, /* header parser */ NULL, /* child_init */ NULL, /* child_exit */ NULL /* post read-request */ }; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
