我遇到了问题,我尝试了所有选项。
我想将所有网站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。
你能帮助我吗?
由于
答案 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]