【发布时间】:2011-09-01 23:35:47
【问题描述】:
我正在使用 Apache 2 的重写规则来使用虚拟主机将某些类型的页面重定向到 HTTPS。这些都是以mydomain.com/users 开头的任何内容。换句话说,所有与用户及其信息有关的页面都应该在 HTTPS 上。我想将所有其他页面重定向到 HTTP。
现在发生的情况是,当用户访问 /users 页面时,他会被很好地重定向到 HTTPS。但是当他离开/users 区域时,我无法将重定向返回到HTTP。
我需要规则和条件将任何不是/users/* 的内容重写为 HTTP。换句话说,请帮我填空:
RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{REQUEST_URI} __blank__
RewriteRule __blank__ http://mydomain.com%{REQUEST_URI} [R=301,L]
在研究这一点时,我试图避免一些事情。我在/users 下需要一个通配符,因为我正在开发应用程序并且经常在用户下添加页面(它是一个 Rails 应用程序)。
我知道用正则表达式做 NOT 匹配并不容易。我在这里要做的就是让大部分站点在 HTTP 上运行,除了 HTTPS 上的 /users/* 页面。
另外,是的,我有一个有效的证书,是的,我已经验证了 Apache2 重写模块可以工作。我可以将所有 URL 重写为 HTTP 没问题。如何不重写 REQUEST_URI 中以 /users 开头的那些?到目前为止,我想我实际上已经尝试过这个网站上的每一个答案......
【问题讨论】: