htaccess在除登录页面之外的所有页面上设置http

时间:2015-06-10 14:45:14

标签: .htaccess url-routing

我使用了另一个Stack帖子中的示例来强制在我的网站上为所有页面强制http,除了用户登录页面。我不知道我是否遗漏了任何东西,但这不起作用:

# Turn SSL on for login
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^customer/login/ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# Turn SSL off everything but login
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^customer/login/ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

看起来它应该有效,但由于某种原因它不是。有人可以让我知道我错过了什么。谢谢。

1 个答案:

答案 0 :(得分:2)

REQUEST_URI需要一个前导斜杠。所以你拥有它,它将无法匹敌。以这种方式尝试你的规则。

# Turn SSL on for login
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/customer/login/ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# Turn SSL off everything but login
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/customer/login/ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]