Aaron Gallagher
habnabit at gmail.com
Mon May 28 09:22:12 EDT 2007
I've just moved a lot of my code (including the code that checks to see if a directory should have its contents listed) from a PythonHandler into a PythonHeaderParserHandler, because after looking at the response loop, I determined that PythonFixupHandler was happening too late in the process. It's created some interesting new problems -- my calls to req.internal_redirect aren't working, as the code was set up like this: req.internal_redirect(...) return apache.OK I guess this isn't stopping the request, like it used to do. How should I change my code to allow internal redirects? Also, all of your suggestions just act the same way as if I had just done return apache.OK. On May 28, 2007, at 4:22 AM, Graham Dumpleton wrote: > On 28/05/07, Aaron Gallagher <habnabit at gmail.com> wrote: >> Okay, I'll try that. >> >> But, what exactly is the purpose of a PythonFixupHandler? The >> documentation doesn't have much to say, but I assume it's for doing >> URL rewriting and redirection. > > Potentially. It is one of a number of phases and is a sort of catch > all or last chance phase before actual response handler is executed. > For a very technical description of the whole Apache request-response > loop see: > > http://www.fmc-modeling.org/projects/apache/html/ > 4_4Request_Response_Loop.html > > If you really want to understand how Apache works, that whole document > is quite a good read, albeit probably more in depth than most people > would care for. > > Graham > >> On May 28, 2007, at 3:44 AM, Graham Dumpleton wrote: >> >> > Arrgghh, mistook mime type for handler. >> > >> > Trying again, although not sure this will work, but might be able >> > to say: >> > >> > req.handler = "httpd/unix-directory" >> > return apache.DECLINED >> > >> > The reason this might not work is that mod_python registers >> itself as >> > a middle handler as does the autoindex module. Because the >> autoindex >> > module is inbuilt, it probably gets processed prior to mod_python >> > handler so too late to do the above. >> > >> > Thus, your only choice would be to provide a fixuphandler which >> undoes >> > the SetHandler just for the request against the directory and >> triggers >> > autoindex instead. Ie., >> > >> > def fixuphandler(req): >> > if req.content_type = "httpd/x-directory": >> > req.handler = "httpd/unix-directory" >> > return apache.OK >> > >> > Enable this using appropriate PythonFixupHandler directive. >> > >> > Graham >> > >> > On 28/05/07, Aaron Gallagher <habnabit at gmail.com> wrote: >> >> I get a 404 Not Found error. >> >> >> >> On May 28, 2007, at 3:22 AM, Graham Dumpleton wrote: >> >> >> >> > What happens if you return apache.DECLINED. >> >> > >> >> > Graham >> >> > >> >> > On 28/05/07, Aaron Gallagher <habnabit at gmail.com> wrote: >> >> >> >> >> >> Is there a way to tell Apache to give a directory listing? I'm >> >> using >> >> >> SetHandler on a directory, and in some cases, I don't need >> to do >> >> >> any special >> >> >> handling, so I'd like Apache to just list the contents of the >> >> >> directory so >> >> >> that I don't have to write my own way of doing it. >> >> >> >> >> >> Just returning apache.OK has Apache send a document of MIME >> time >> >> >> httpd/x-directory with content length 0. >> >> >> >> >> >> Aaron Gallagher >> >> >> <habnabit at gmail.com> >> >> >> >> >> >> >> >> >> _______________________________________________ >> >> >> Mod_python mailing list >> >> >> Mod_python at modpython.org >> >> >> http://mailman.modpython.org/mailman/listinfo/mod_python >> >> >> >> >> >> >> >> >> >> Aaron Gallagher >> >> <habnabit at gmail.com> >> >> >> >> >> >> >> >> Aaron Gallagher >> <habnabit at gmail.com> >> >> >> Aaron Gallagher <habnabit at gmail.com>
|