Configuration: Apache + mod_python

Danilo dbraband at gmail.com
Thu Mar 8 14:02:52 CET 2007


On 8 Mrz., 12:18, Graham.Dumple... at gmail.com wrote:
> On Mar 8, 9:50 pm, "Danilo" <dbrab... at gmail.com> wrote:
>
> > Hi there,
>
> > is it possible to create a rewrite rule to send every server-request
> > to the directory /py? But only if the file does not exists on the
> > server.
>
> > This is my mod_python section of the apache config-file.
>
> > <Location "/py">
> >         SetHandler python-program
> >         PythonHandler django.core.handlers.modpython
> >         PythonPath "['/var/www/mydomain.com/htdocs/py'] + sys.path"
> >         SetEnv DJANGO_SETTINGS_MODULE myapp.settings
> >         PythonDebug Off
> > </Location>
>
> For the more general case of where a HTTP 404 error would otherwise be
> returned, indicating that a resource could not be found, as opposed to
> an actual physical file, you can just use:
>
>   ErrorDocument 404 /py
>
> This would be simpler than using mod_rewrite. I can't remember though
> whether the handler when triggered in this case can change the
> response status to something other than 404.
>
> You could use mod_rewrite if you really must, but not sure how it
> would interact with virtual resources managed by some handler where no
> actual file exists. To be practical you would probably want to
> restrict the scope of mod_rewrite to specific contexts.
>
> Quoting an example from very good book "The Definitive Guide to Apache
> mod_rewrite", you can do something similar to:
>
>   RewriteEngine On
>   # If its not here ...
>   RewriteCond %{REQUEST_FILENAME} !-f
>   RewriteCond %{REQUEST_FILENAME} !-d
>   # Look here instead ...
>   RewriteRule ^/images/(.*) /pics/$1 [PT]
>
> In this case it is causing lookups for images to be made in two
> places, but your case wouldn't be much different.
>
> Graham

The rewrite rule works, but now every request ist send to /py.
This is my .conf:

<VirtualHost *>
	DocumentRoot /var/www/mydomain.com/htdocs
	ServerName mydomain.com
	ServerAlias www.mydomain.com

	<Location "/py">
		SetHandler python-program
		PythonHandler django.core.handlers.modpython
		PythonPath "['/var/www/mydomain.com/htdocs/py'] + sys.path"
		SetEnv DJANGO_SETTINGS_MODULE myapp.settings
		PythonDebug Off
	</Location>

	RewriteEngine On
	# If its not here...
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	# Look here instead...
	RewriteRule (.*) /py$1 [PT]

	ErrorLog /var/www/mydomain.com/logs/error.log
	CustomLog /var/www/mydomain.com/logs/access.log common
</VirtualHost>

Any ideas what is wrong?




More information about the Python-list mailing list