配置 Apache 以覆盖 WSGI

Configure Apache to override WSGI

我有一个由 Apache2 提供服务的基于 Django 的站点。我的虚拟主机配置为我的域(称之为 example.com)服务于我的 wsgi 应用程序。

我还想在示例中为 Wordpress 站点提供服务。com/blog 使用 Apache。我如何使用 Apache 在 /blog 为 Wordpress 站点提供服务? 目前,我的请求被 Django 捕获并且我得到一个 404,因为 /blog 不在我的 Django url 中。

在您的 Apache conf 中将这些行添加到您的 VirtualHost:

Alias /blog /var/www/example.com/blog/
<Directory /var/www/example.com/blog>
Require all granted
</Directory>

在 Django 文档 (https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/) 中,他们给出了这个例子:

Alias /media/ /path/to/mysite.com/media/
Alias /static/ /path/to/mysite.com/static/

<Directory /path/to/mysite.com/static>
Require all granted
</Directory>

<Directory /path/to/mysite.com/media>
Require all granted
</Directory>

WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py

<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>

这适用于静态文件,但也适用于您的博客。

您的问题是您在 Django URL 路由器中之前无法识别博客引用。尽管您可以执行 URL-rule + view 来进行重定向,但最简单的方法是创建一个新的子域,例如blog.mydomain.com,并配置 Apache 来处理附加站点。我为我的所有 Django 站点都这样做,并且工作正常。