RewriteRule第一条规则的作品,第二条规则不重定向到https
问题描述:
我试图强制两个http页面https。当我做的登录页面,它完美的作品:RewriteRule第一条规则的作品,第二条规则不重定向到https
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^login\.htm$ https://www.sample.com/dev/login.htm [R=301,NC,L]
然而,当我试图添加第二页,我得到这个服务器错误:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^login\.htm$ https://www.sample.com/dev/login.htm [R=301,NC,L]
RewriteRule ^register\.htm$ https://www.sample.com/dev/register.htm [R=301,NC,L]
显然,出事了。所以我改成了简单重定向第二页,而不是重写规则上:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^login\.htm$ https://www.sample.com/dev/login.htm [R=301,NC,L]
Redirect ^register\.htm$ https://www.sample.com/dev/register.htm [R=301,NC,L]
该网站又回来了,但第二页没有强制HTTPS的。我已经检查了所有,它应该工作,但它不。感谢您的帮助。
答
重写条件仅适用于紧随其后的规则。所以,你有两个选择:
选项1:重复每个规则的条件
RewriteCond %{HTTPS} off
RewriteRule ^login.htm$ https://www.sample.com/dev/login.htm [R=301,NC,L]
RewriteCond %{HTTPS} off
RewriteRule ^register.htm$ https://www.sample.com/dev/register.htm [R=301,NC,L]
选项2:两个匹配的URI使用一个规则
RewriteCond %{HTTPS} off
RewriteRule ^(login|register).htm$ https://www.sample.com/dev/$1.htm [R=301,NC,L]