|
Daniel J. Popowich
dpopowich at mtrsd.k12.ma.us
Sun Jun 6 22:47:53 EDT 2004
If content negotiation is being used (mod_negotiation) and a directory
has MultiViews turned on with the Options directive, then certain
handlers will not work: you will get a 404 error and you will see
something like this in your apache error log:
[Sun Jun 06 20:44:44 2004] [error] [client 127.0.0.1] Negotiation:
discovered file(s) matching request: /some/dir/foo
This can happen with handlers that allow the requests to reference
files without a full filename. Typically, this will be handlers that
don't require the file extension so as to allow "clean" URLs. For
example, when using the publisher handler, if I have a module named
foo.py that has a function named bar defined, then these two requests
should both work:
http://myhost/some/dir/foo.py/bar
http://myhost/some/dir/foo/bar
But if /some/dir has MultiViews on (or a parent directory has it on
and it's not explicitly turned off in a subdirectory) then only the
first one will work, the second will generate a 404 error.
The only solution seems to be to explicitly turn off MultiViews:
<Directory /some/dir>
Options -MultiViews
SetHandler mod_python
PythonHandler mod_python.publisher
</Directory>
This is the behaviour I'm witnessing. Should this be correct? Why is
mod_negotiation poking its nose in where it's not wanted, i.e., in a
directory using SetHandler?
Daniel
|