Ian Clelland
ian at veryfresh.com
Sat Aug 17 00:44:09 EST 2002
On Sat, Aug 17, 2002 at 04:29:15PM +1200, Alex King wrote: > Quoting a previos post, by Ian Clelland: > > >PythonTransHandler, which will receive all requests, and has the chance > >to modify the URL before Apache passes the request to your main > >handler. > > How do I use this? The same way you would set a regular PythonHandler, you can set up Apache to use a PythonTransHandler: <VirtualHost *:80> ServerName pytest.zoostation DocumentRoot /var/local/apache/htdocs/pytest PythonPath "sys.path+['/home/ian/src/pytest']" PythonTransHandler translate_test </VirtualHost> And then just write the python module to set the filename attribute: def transhandler(req): req.filename = '/var/local/apache/htdocs/pytest/test2.html' return apache.OK > My problem is that the request object members such as filename and the > like are read-only, so how do I pass the new filename back to apache? Well, req.filename is definitely _not_ read-only. This may be another bug in the documentation, but the code is there in requestobject.c to set that attribute. I just ran a couple of tests, and I can set the filename for a request, and Apache will return that file. The problem I can see right now is that there appears to be no way to get the DocumentRoot for the current request. You shouldn't have a problem if your cached files are completly outside of your DocumentRoot (and you have the absolute path available to your handler,) but you might have a hard time if you want to translate a URL to another file within your DocumentRoot, and don't want to put the full path inside your source files. Ian Clelland <ian at veryfresh.com>
|