将HTTPS重定向到HTTP,但一个目录除外

时间:2012-03-16 21:46:49

标签: http .htaccess mod-rewrite https

我为提出以其他各种形式提出的问题而道歉,但我遇到的答案都没有针对我的具体情况。

我想将所有页面重定向到HTTP(通过mod_rewrite),除非它们位于/ secure /文件夹中。

这是我尝试过的:

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^secure 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

有人声称有效的另一个版本,但在这种情况下不起作用:

RewriteRule  ^secure/  -  [L]
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^ http://www.thevirtualstagingexperts.com%{REQUEST_URI} [L,R=301]

我宁愿使用第一个版本的变体。它看起来应该工作(无论如何)。任何人都可以对这个如此沉闷的主题发表一些看法吗?

5 个答案:

答案 0 :(得分:0)

回复:以下是我尝试的内容

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^secure 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

我认为您错过了该URI的斜杠:^/secure

答案 1 :(得分:0)

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/secure/.*
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

答案 2 :(得分:0)

在将[R,L]添加到最后一条规则后,您的原始解决方案适用于我:

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^secure 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

答案 3 :(得分:0)

%{HTTP_HOST} !\.dev$ [NC]%{HTTP_HOST} ^www\..+$ [NC]
# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI

答案 4 :(得分:-1)

有人向我指出,HTTPS并没有像我想象的那样对Apache征税。显然,大部分额外负载来自建立连接。由于客户端此时已经建立了安全连接,因此让它们继续使用它应该没问题。

如果有人读到这个,就知道重写规则的原因:

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^secure 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

不起作用(它不会像它应该那样排除/ secure /目录),我很想知道。我是编程新手,不能理解这样的东西真的在我的皮肤下。

谢谢Stack Overflow!