我通过一个文件配置我的网络空间的身份验证.htaccess
(我无法控制该httpd.conf
文件)。为了安全实施,我通过以下方式自动将 HTTP 重定向到 HTTPS
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=307,L]
对于身份验证,我使用以下几行
AuthType Basic
AuthName name
AuthUserFile ..path-to-htpasswd..
require valid-user
如果我通过 http 访问资源,我必须输入两次用户名和密码(第一次用于获取 307 重定向,第二次用于获取实际文档)。有没有办法只对 HTTPS 请求应用身份验证?这样 HTTP 请求就会直接获得重定向,这样我只需要验证一次身份。
你好,谢谢你的回答
答案1
您应该能够利用在文件提供之前处理重写的事实:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=307,L]
<FilesMatch ".">
AuthType Basic
AuthName name
AuthUserFile ..path-to-htpasswd..
require valid-user
</FilesMatch>
.
是正则表达式通配符,因此身份验证仍然适用于所有有效请求,但仅在重写发生后