我正在尝试将 Apache 配置为托管 Django 网络服务和 PHP 网站。
具有该模式的所有 URLwww.mysite.com/api
都应定向到 Django 服务。所有其他 URL(例如www.mysite.com
)都应该指向 PHP 网站。
我的虚拟主机配置如下所示:
...
WSGIScriptAlias /api /var/www/mysite.com/apache/django.wsgi
<Directory /var/www/mysite.com/apache>
Order allow,deny
Allow from all
</Directory>
Alias / /var/www/mysite.com/apache/php/
<Directory /var/www/mysite.com/apache/php>
Options Indexes FollowSymLinks
AllowOverride All
Order Deny,Allow
Allow from all
</Directory>
...
Run Code Online (Sandbox Code Playgroud)
这会将每个请求定向到正确的处理程序。但是,我的 Django urls.py看起来像这样:
...
api_patterns = patterns('',
url(r'^api/1.0/$', views.api_root),
url(r'^api/1.0/oauth/',
include('oauth2_provider.urls',
namespace='oauth2_provider')),
...
Run Code Online (Sandbox Code Playgroud)
这无法匹配任何 URL,因为它期望它们以api
. 当然,这个前缀在它到达这里之前被剥离(当请求到达这里时,它们是格式1.0/oauth
等)。
有没有办法将完整的 URL 传递给 Django?
mod_wsgi 的作者 Graham Dumpleton 提出了几种解决此问题的方法,这两种方法都有效(请参阅下面已接受的答案)。
我选择了他在 …