我的网络服务器上有可公开访问的文件。我想启用自动索引(选项 + 索引),但我想要求输入密码才能查看这些列表。我设置 Auth 没有问题,但是公共文件和 DirectoryIndex 文件存在复杂性,因为如果有人还要求提供目录,并且有 DirectoryIndex 文件,他们不应该为此输入密码。出于安全原因,只有自动索引需要密码。
这是我想出的:
Options +Indexes
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}index.php -f
RewriteRule ^.*$ %{REQUEST_URI}index.php [R,NE,L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}index.html -f
RewriteRule ^.*$ %{REQUEST_URI}index.html [R,NE,L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}index.htm -f
RewriteRule ^.*$ %{REQUEST_URI}index.htm [R,NE,L]
<FilesMatch "^$">
AuthName "My Auth Name"
AuthType Basic
AuthUserFile /path/to/my/.htpasswd
Require valid-user
</FilesMatch>
FilesMatch 位工作正常。任何对目录的请求都会被要求登录,但普通文件会通过。这很简单,困难的部分是让 DirectoryIndexes 在不登录的情况下呈现。顶部的重写是我在请求身份验证之前尝试重定向请求失败,但没有骰子,它首先要求身份验证什么。
我已经对此进行了大约 6 个小时的研究,此时我即将放弃。任何帮助,将不胜感激。
编辑:这是一个示例目录结构。
/images/blah.jpg <- does not require a password
/images/ <- requires a password to view listing
/index.html <- does not require a password
/ <- does not require a password because a DirectoryIndex file exists (index.html)