mod_wsgi下的Django应用程序 - 如何不使用url

时间:2014-05-13 22:27:59

标签: python django mod-wsgi

我有一个Django应用程序,我将其从mod_python移植到mod_wsgi。

在mod_python下,我能够将http://example.com/Ahttp://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>

1 个答案:

答案 0 :(得分:1)

使用:

WSGIScriptAlias /A /path/to/my/wsgi.py/A
WSGIScriptAlias /B /path/to/my/wsgi.py/B