Molomby 的解决方案适用于 2.4 及更高版本,但不适用于当前的 Debian 版本 2.2.22。
Ben's / Chris Heald 的解决方案在 2.2.22 中也不适用于我,但这是由于不同的 order/satisfy 配置。这些设置已随 2.4 更改,并且该解决方案似乎与 2.4 及更高版本不兼容(重定向有效,但浏览器只是显示未经授权的错误而不要求提供凭据)。
以下是适用于 2.4 以下和以上版本的两种解决方案的组合:
RewriteEngine on
RewriteOptions Inherit # rewrite rules from parent directories
RewriteCond %{HTTPS} off
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
AuthType Digest
AuthName "private area"
AuthDigestProvider file
AuthUserFile /path/to/file/.htdigest
<IfVersion < 2.4>
Order Deny,Allow
Deny from all
Satisfy Any # reset this to 'All' in custom <Files> and <Directory> directives that block access
Allow from env=!HTTPS
Require valid-user
</IfVersion>
<IfVersion >= 2.4>
<If "%{HTTPS} == 'on'">
AuthMerging And
Require valid-user
</If>
</IfVersion>
要求:mod_rewrite、mod_auth、mod_digest、mod_version