我有一个Django应用程序,我将其从mod_python移植到mod_wsgi。
在mod_python下,我能够将http://example.com/A和http://example.com/B映射到同一个Django应用程序。但是,http://example.com/C(或任何未指定的内容)根本不会调用python,wsgi或Django。
此外,Django仍然能够在路径的开头“看到”“/ A”和“/ B”。
相比之下,当我使用mod_wsgi进行配置时,我可以使用简单的WSGIScriptAlias指令运行我的Django应用程序:
WSGIScriptAlias / /path/to/my/wsgi.py
但是这个方法让我的Django应用处理“/ C”(以及任何无效的路径),这是我不想要的。
所以我尝试了这个:
WSGIScriptAlias /A /path/to/my/wsgi.py
WSGIScriptAlias /B /path/to/my/wsgi.py
此方法调用我的Django应用程序,但Django应用程序不会“看到”网址的“/ A”或“/ B”部分。
最后,将WSGIScriptAlias
放在<Location>
内会出错:
WSGIScriptAlias not allowed here
如何配置mod_wsgi以便将路径的第一部分传递给Django,而Apache只会将一些路径传递给Django,所有这些路径都会传递给同一个Django应用程序?
这是我的旧mod_python配置,它有效:
<Location "/A/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE path.to.my.django.settings
</Location>
<Location "/B/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE path.to.my.django.settings
</Location>
答案 0 :(得分:1)
使用:
WSGIScriptAlias /A /path/to/my/wsgi.py/A
WSGIScriptAlias /B /path/to/my/wsgi.py/B