我试图让 Apache 为 Django 提供服务,但我希望它比我现在实现的愚蠢方式具有更大的灵活性。目前,我的 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(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 “吞下” URL 的一部分,并将其余部分用于与我在 urls.py 中的模式进行模式匹配。我该怎么做呢?