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]