将http重定向到https,但一个目录除外

时间:2016-11-02 13:58:10

标签: .htaccess yii

我遇到了问题,我尝试了所有选项。

我想将所有网站http重定向到https,除了一个目录,这个目录是内联网:

RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{REQUEST_URI} ^\/(intranet)
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]

RewriteCond %{HTTP:X-Forwarded-SSL} =on
RewriteCond %{REQUEST_URI} !^\/(intranet)
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]

但是现在所有网站都显示了http,并且它没有重定向到https。

你能帮助我吗?

由于

2 个答案:

答案 0 :(得分:2)

您的规则是将除/ intranet之外的所有请求重定向回http,因为否定的重写条件,从第二条规则中删除字符。 试试:

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-SSL} =on
RewriteCond %{REQUEST_URI} !^/(intranet)
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]


RewriteCond %{HTTP:X-Forwarded-SSL} =on
RewriteCond %{REQUEST_URI} ^/(intranet)
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]

另外你可以试试这个:

RewriteEngine on
RewriteCond %{REQUEST_SCHEME} =http
RewriteCond %{REQUEST_URI} !^/(intranet)
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R=301]


RewriteCond %{REQUEST_SCHEME} =https
RewriteCond %{REQUEST_URI} ^/(intranet)
RewriteRule (.*) http://%{HTTP_HOST}/$1 [L,R=301]

答案 1 :(得分:0)

这样只使用规则一次,

RewriteCond %{REQUEST_URI} !^intranet
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]