htaccess https到https子文件夹

时间:2016-05-18 20:28:29

标签: apache .htaccess redirect https

我正在创建一个拼图/挑战网站,要求有两组不同的服务文件,具体取决于用户是否输入了http:或https:

我似乎无法将使用我的网络主机的所有HTTPS流量重定向到子文件夹,因此我一直在尝试编辑htaccess文件,但我最终仍然无限重定向。

我想做的事情:

http://www.example.com/secure   ->   http://www.example.com 
https://www.example.com         ->   https://www.example.com/secure 

当我设置重定向时,在Chrome超时后,我得到https://www.example.com/secure/secure/secure/secure/secure/secure/secure ...

我设置的重定向是:

RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule .* https://www.example.com/secure [NC,L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^secure/ http://www.example.com/ [NC,L,R=301]

两条规则似乎都不起作用,但第一条规则似乎永远存在。谁能解释我做错了什么?

1 个答案:

答案 0 :(得分:0)

RewriteCond %{HTTPS} on部分可能不适用于所有Web服务器。有些服务器正在使用RewriteCond %{HTTP:X-Forwarded-Proto} https

我认为你应该这样做:

RewriteEngine On 
RewriteCond %{HTTPS} on [OR] 
RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteCond %{REQUEST_URI} !^/secure
RewriteRule ^(.*)$ https://www.example.com/secure [NC,L,R=301]

RewriteCond %{HTTPS} off [OR] 
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} ^/secure
RewriteRule ^(.*)$ http://www.example.com/ [NC,L,R=301]