Graham Dumpleton
grahamd at dscpl.com.au
Fri Aug 12 01:43:21 EDT 2005
Anyone who reads my followups to questions asked here would know I tend to recommend that one avoid the use of the MultiViews option. This is especially the case if you are using SetHandler to create a handler which handles all requests in a directory. All the same, use of MultiViews is still popular with people using AddHandler and mod_python.publisher so they can avoid having to use ".py" in the URL. The best configuration that one can use is: AddHandler mod_python .py PythonHandler mod_python.publisher PythonDebug On Options +MultiViews MultiviewsMatch Handlers This would then allow one to use: /some/path/page instead of: /some/path/page.py This though still has problems where you have non ".py" files in the same directory which share the same basename as a ".py" file but a different extension. For example, if you have a file "page.psp" in the same directory, all still works okay for the above URL. If however you add a file "page.html" or "page.txt" into the directory, preference is given first to the ".html" file, next the ".txt". In other words, the a handler for a specific extension has a lower precedence than a physical ".html" or ".txt" file, yet the handler gets precedence over a file type with an extension. Why this occurs is all tied up with the weighting preference for different file types as specified by the browser. For example: Accept: text/html; q=1.0, text/*; q=0.8 Plus I assume some parts of the Apache configuration itself. The problem with this is that if the ".html" file is actually mean't to be an input to some processing done by the handler, a request is going to pick up the raw unprocessed ".html" file instead of running it through the handler. Such are some of the issues with using MultiViews. The simple fix is to not use MultiViews and use ".py" extensions in the URLs, which is what I suggest, and all the problems go away. I would rather like to understand how one could configure Apache to redefine the precedence order to always ensure the handler gets precedence. Does this make sense? Is it possible? Note, I don't actually use mod_python.publisher myself. I am purely trying to understand this better so I might perhaps be able to give out better answers to people when they ask about these issues. Graham
|