我正在创建一个拼图/挑战网站,要求有两组不同的服务文件,具体取决于用户是否输入了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]
两条规则似乎都不起作用,但第一条规则似乎永远存在。谁能解释我做错了什么?
答案 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]