mod_rewrite从SSLredirect到HTTP不起作用

我想使用mod_rewrite来确保某些页面通常以SSL和其他方式提供,但是我无法正常工作

这工作(请求uri是用户或购物车时redirect到SSL)

RewriteCond %{SERVER_PORT} 80 RewriteCond %{REQUEST_URI} users [OR] RewriteCond %{REQUEST_URI} cart RewriteRule ^(.*)$ https://secure.host.tld/$1 [R,L] 

所以,为了适应用户不要用ssl来浏览网站,当请求其他uris时,我想下面,但是不起作用:(当端口是443并且请求uri不是需要服务的uris之一通过SSL,redirect回正常的主机)

 RewriteCond %{SERVER_PORT} 443 RewriteCond %{REQUEST_URI} !^/users [OR] RewriteCond %{REQUEST_URI} !group RewriteRule ^/?(users|groups)(.*)$ http://host.tld/$1 [R,L] 

任何帮助?

谢谢

你的代码:

 RewriteCond %{SERVER_PORT} 443 RewriteCond %{REQUEST_URI} !^/users [OR] RewriteCond %{REQUEST_URI} !group RewriteRule ^/?(users|groups)(.*)$ http://host.tld/$1 [R,L] 

如果安全,而不是用户或组…我想你想如果安全,而不是用户,而不是组。 但是,那么你只重写用户和组到http:这似乎是从你想要的东西倒退。

所以,你可以这样做:

 RewriteCond %{SERVER_PORT} 443 RewriteCond %{REQUEST_URI} !^/(users|group) RewriteRule ^(.*)$ http://host.tld/$1 [R,L] 

既然你已经在你的规则中排除了用户/组,你的重写规则将永远不会看到它。

但是,不要使用SERVER_PORT,请考虑:

 RewriteCond %{HTTPS} off 

 RewriteCond %{HTTPS} on 

为了使debugging更容易一些,

 RewriteLog /tmp/rewritelog RewriteLogLevel 9 

并在提出请求时观看该日志文件,您可以更好地了解发生的情况。

这看起来不像使用SSL的特别好方法。 可能有一种方法搞乱获取请求,以避免完全重写。 为什么你必须使用重写来获得这个function。

也许我错了,但这段代码看起来有问题。

SSL地带! http://www.youtube.com/watch?v=Dd5qGS-5C0I