【发布时间】:2010-10-14 17:31:06
【问题描述】:
我有一个在 apache 2.2.14 上运行的 django Web 应用程序,我想通过 https 运行管理应用程序。
阅读了关于使用代理、编写中间件、运行替代 wsgi 脚本的大量讨论后,#httpd 中的章节帮了我的忙。解决方案非常简单,我很惊讶我没有在网上找到它,所以我很好奇我是否做出了一些明显的假设或错误。
一个复杂的问题是,我还想通过 https 在站点中运行我的 django 应用程序之一,即 /checkout 上的所有内容。
基本上,如果用户在 http 上请求以 /admin 或 /checkout 开头的 URI,他们将被重定向到该 URI,但在 https 上。相反,如果用户在 https 上请求一个不以 /admin 或 /checkout 开头的 URI,他们将被重定向到该 URI,但在 http 上。
解决这个问题的关键是在我的 VirtualHost 配置中使用 Redirect 和 RedirectMatch 指令。
<VirtualHost *:80>
... host config stuff ...
Redirect /admin https://www.mywebsite.com/admin
Redirect /checkout https://www.mywebsite.com/checkout
</VirtualHost>
<VirtualHost *:443>
... ssl host config stuff ...
RedirectMatch ^(/(?!admin|checkout).*) http://www.mywebsite.com$1
</VirtualHost>
【问题讨论】:
标签: django http https apache2 admin