Apache 中仅针对 HTTPS 请求的身份验证

Apache 中仅针对 HTTPS 请求的身份验证

我通过一个文件配置我的网络空间的身份验证.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>

.是正则表达式通配符,因此身份验证仍然适用于所有有效请求,但仅在重写发生后

相关内容