所以我在网站上有一个受保护的文件夹,其中包含强制https并使用基本身份验证的htaccess。问题是,如果我使用http去那里,它会在转移到https之前请求身份验证,然后再次请求身份验证。有没有办法让它在提示我之前转移到https?
这是htaccess:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} folder
RewriteRule ^(.*)$ https://site.net/folder/$1 [R,L]
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /home/user/site.net/folder/.htpasswd
Require valid-user
更新:我决定实施自己的身份验证系统来绕过这个问题。
答案 0 :(得分:1)
这是您只能显示一次身份验证的方法:
http
重定向到https
SetEnvIfNoCase
禁用身份验证您可以使用的代码:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^filder https://%{HTTP_HOST}/folder%{REQUEST_URI} [R,L,NC,CO=NO_AUTH:1:%{HTTP_HOST}]
SetEnvIfNoCase COOKIE NO_AUTH=1 OKAY
AuthType Basic
AuthName "Dialog prompt"
AuthUserFile /home/user/site.net/folder/.htpasswd
Require valid-user
Order allow,deny
allow from all
deny from env=OKAY
Satisfy any
答案 1 :(得分:0)
如果您使用的是Apache 2.4,您显然可以在htaccess中使用条件结构:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
<If "%{HTTPS} == 'on'">
AuthType basic
AuthName "Private"
AuthUserFile /path/to/passwordfile
Require valid-user
</If>