过去,用户使用基本HTTP身份验证登录到私人文件夹。我们已通过添加SSL证书升级了网站,因此现在鼓励这些用户使用SSL以保护其密码。
尝试从http://example.com/private/重定向到https://example.com/private/时,我尝试了这个.htaccess文件:
RewriteCond %{HTTPS} =off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
AuthUserFile /usr/home/example/passwd
AuthName "Private Page"
AuthType Basic
问题是当用户导航到非SSL页面时,它会在重定向之前首先要求他们进行身份验证。这违背了整个目的。
答案 0 :(得分:0)
您可以尝试拆分重写规则和mod_auth指令:
RewriteCond %{HTTPS} =off
RewriteRule ^/?private https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
AuthUserFile /usr/home/example/passwd
AuthName "Private Page"
AuthType Basic
答案 1 :(得分:0)
如果您使用的是Apache 2.4,则可以使用configuration sections避免双重身份验证。
# Redirect to HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# Authenticate users only when using HTTPS
<If "%{HTTPS} == 'on'">
AuthType Basic
AuthName "Special things"
AuthUserFile /etc/blah.htpasswd
Require valid-user
</If>