使用 Django 和 Apache 的非根路由

sha*_*nus 5 apache django

我正在尝试让 Apache 为 Django 提供服务,但我希望它比我现在实现的愚蠢方式具有更大的灵活性。目前,我的 httpd_wsgi.conf 有这一行:

WSGIScriptAlias / /Library/WebServer/Documents/acdc/apache/promotions.wsgi
Run Code Online (Sandbox Code Playgroud)

在我的项目的 urls.py 中,我有这一行:

url(r'^chicken/login/', 'login'),
Run Code Online (Sandbox Code Playgroud)

如果我在浏览器的地址栏中输入http://www.example.com/chicken/login,我就会被路由到适当的登录功能。如果 urls.py 中的所有模式都以“chicken”开头,那么一切都会正常工作。

不过,我想要的是能够切换部署此应用程序的 URL。举例来说,如果我想让http://www.example.com/monkey/login正常工作怎么办?现在我必须更改我所有的网址和所有链接,这很愚蠢。如果我更改 WSGIScriptAlias,这似乎应该是微不足道的:

WSGIScriptAlias /monkey/ /Library/WebServer/Documents/acdc/apache/promotions.wsgi
Run Code Online (Sandbox Code Playgroud)

那么我可以让我的 URL 看起来像:

url(r'^login/', 'login'),
Run Code Online (Sandbox Code Playgroud)

并摆脱耦合。问题是,经过一个小时的反复试验和研究,我无法让它发挥作用。使用之前的配置导航到http://www.example.com/monkey/login会在日志中显示以下 Apache 错误:

Target WSGI script not found or unable to stat: /Library/WebServer/Documents/acdc/apache/promotions.wsgilogin
Run Code Online (Sandbox Code Playgroud)

所以看起来“登录”路由只是被附加到启动我的 Django 应用程序的 Promotions.wsgi 文件中。

总而言之,我想让 Apache“吞掉”URL 的部分,并提供其余部分以与 urls.py 中的模式进行模式匹配。我该怎么做呢?

小智 1

对于那些想要有 2 个 WSGIScriptAliases 的人,其中一个是根目录,另一个是子目录。请确保将它们按正确的顺序排列:

WSGIScriptAlias /game /var/www/game/game.wsgi
WSGIScriptAlias / /var/www/landing/landing.wsgi
Run Code Online (Sandbox Code Playgroud)