django - 使用 Django 和 Apache 进行非根路由

标签 django apache

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

WSGIScriptAlias / /Library/WebServer/Documents/acdc/apache/promotions.wsgi

在我项目的 urls.py 中,我有这一行:
url(r'^chicken/login/', 'login'),

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

不过,我想要的是能够切换部署此应用程序的 URL。例如,如果我想要 http://www.example.com/monkey/login 怎么办?上类?现在我必须更改我所有的 URL 和所有链接,这很愚蠢。如果我更改 WSGIScriptAlias,这似乎应该是微不足道的:
WSGIScriptAlias /monkey/ /Library/WebServer/Documents/acdc/apache/promotions.wsgi

然后我可以让我的 URL 看起来像:
url(r'^login/', 'login'),

并摆脱耦合。问题是,经过一个小时的反复试验和研究后,我无法让它工作。导航至 http://www.example.com/monkey/login使用刚才的配置在日志中给了我这个 Apache 错误:
Target WSGI script not found or unable to stat: /Library/WebServer/Documents/acdc/apache/promotions.wsgilogin

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

总而言之,我想让 Apache 'swallow' URL 的一部分,并将其余部分提供给与我在 urls.py 中的模式进行模式匹配的模式。我该怎么做呢?

最佳答案

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

WSGIScriptAlias /game /var/www/game/game.wsgi
WSGIScriptAlias / /var/www/landing/landing.wsgi

关于django - 使用 Django 和 Apache 进行非根路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14528150/

相关文章:

django - 即使为零也获取记录数

Django:用于排除第一个条目的循环

java - Apache + 汤姆猫

php - 使用 PHP for Dummies 将 'username' 添加到 'user_id' 的 URL

django - django 模板中的变量减法

python - 已删除InDjango19Warning - 不在 INSTALLED_APPS 中的应用程序中

python - 如何按日期过滤日期时间字段?

apache - 启动Apache槽时为nullpointerexception

https 子域重定向的 Apache 重写规则

php - 任何导致内部服务器错误的 .php 文件