.htaccess中的{REQUEST_URI}与SSL重写不匹配

时间:2011-03-14 16:56:51

标签: .htaccess

嘿,我正在尝试使用.htaccess在我网站的页面上强制使用SSL。

在我的.htaccess中,我正在这样做:

RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} auth/login
RewriteRule ^(.*)$ https://shop.mysite.co.uk/auth/login [R=301,L]

所以我要去这个页面:http://shop.mysite.co.uk/auth/login - 希望它被强制为.htaccess

我知道它有效,因为我确信我早些时候工作了。但我有一种可怕的感觉,我改变了一些东西,不知道什么,现在它不会起作用!当我转到http://shop.mysite.co.uk/auth/login时,它只是使用http正常加载页面而不是https。

似乎是这样:RewriteCond %{REQUEST_URI} auth / login无法正常工作,如果我删除该行,则会将任何网址重定向到https://shop.mysite.co.uk/auth/login

2 个答案:

答案 0 :(得分:1)

如果您正在使用除上述规则之外的其他规则,请确保在这些规则之前放置导致外部重定向(即 R 标志)的规则,这些规则只会导致内部重写。否则,已经内部重写的规则可能已经更改了您的请求URL,并且您的模式将不匹配。

答案 1 :(得分:0)

REQUEST_URI将有一个前缀斜杠。这应该有效:

RewriteCond %{REQUEST_URI} /auth/login