Apache 密码保护自动索引,但不使用.htaccess保护静态文件
我的Web服务器上有可公开访问的文件。我想启用自动索引选项+索引,但需要密码才能查看这些列表。我在设置Auth方面没有问题,但是公共文件和DirectoryIndex文件有一些复杂的地方,如果有人还要求提供目录,并且有DirectoryIndex文件,他们不应该为此输入密码。出于安全原因,只有自动索引需要密码 以下是我的想法:Apache 密码保护自动索引,但不使用.htaccess保护静态文件,apache,authentication,.htaccess,mod-rewrite,mod-autoindex,Apache,Authentication,.htaccess,Mod Rewrite,Mod Autoindex,我的Web服务器上有可公开访问的文件。我想启用自动索引选项+索引,但需要密码才能查看这些列表。我在设置Auth方面没有问题,但是公共文件和DirectoryIndex文件有一些复杂的地方,如果有人还要求提供目录,并且有DirectoryIndex文件,他们不应该为此输入密码。出于安全原因,只有自动索引需要密码 以下是我的想法: Options +Indexes Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILE
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)
只需删除该块即可将其应用于所有请求,而不仅仅是那些请求目录
Options +Indexes +FollowSymLinks
RewriteEngine On
…
AuthName "My Auth Name"
AuthType Basic
AuthUserFile /path/to/my/.htpasswd
Require valid-user
编辑为什么不为您希望允许的目录启用索引功能?只需删除该块即可将其应用于所有请求,而不仅仅是那些请求目录
Options +Indexes +FollowSymLinks
RewriteEngine On
…
AuthName "My Auth Name"
AuthType Basic
AuthUserFile /path/to/my/.htpasswd
Require valid-user
编辑你为什么不为那些你想允许的目录启用索引呢?我知道这是一个掘墓人,但我希望它可能会帮助像我这样的谷歌用户——我对htaccess的所有东西都是全新的 我想做一些类似的事情,尽管我认为更简单-我想在访问目录时继续使用Apache autoindex,但为了我自己的利益,我想让它受到密码保护,而不是完全禁用它-但同时,如果直接链接,任何文件都可以自由访问,因此,人们无需用户名和密码即可访问它们 互联网上广泛使用的一种目录技巧的基本密码是:
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
require valid-user
限制require属性范围的简单添加实现了我的目标:
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
<Files "">
require valid-user
</Files>
如果我试图访问一个没有索引文件的目录,那么我必须输入用户名和密码
如果我试图访问带有索引文件的目录,它将正常加载-不需要u/p
如果我试图直接访问一个文件,它将正常加载,如上所述,不需要u/p
正如可能预期的那样,它对所有子文件夹都有同样的影响
从我目前的测试来看,我的表现似乎很好。我知道这是一个掘墓人,但我希望它能帮助像我这样的谷歌用户——我对htaccess的所有东西都是全新的 我想做一些类似的事情,尽管我认为更简单-我想在访问目录时继续使用Apache autoindex,但为了我自己的利益,我想让它受到密码保护,而不是完全禁用它-但同时,如果直接链接,任何文件都可以自由访问,因此,人们无需用户名和密码即可访问它们 互联网上广泛使用的一种目录技巧的基本密码是:
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
require valid-user
限制require属性范围的简单添加实现了我的目标:
AuthType Basic
AuthName "restricted area"
AuthUserFile /path/to/.htpasswd
<Files "">
require valid-user
</Files>
如果我试图访问一个没有索引文件的目录,那么我必须输入用户名和密码
如果我试图访问带有索引文件的目录,它将正常加载-不需要u/p
如果我试图直接访问一个文件,它将正常加载,如上所述,不需要u/p
正如可能预期的那样,它对所有子文件夹都有同样的影响
根据我到目前为止的测试,似乎是这样的,工作正常。这不起作用,因为我需要人们能够链接到服务器上的文件,而无需键入密码。重新编辑:系统有几千个目录,我不能为每个目录都自定义.htaccess。@Jason Keene:a.htaccess配置文件也会影响其子目录。是的,这不是问题所在。在非常基本的语言中,我希望这样做,当您请求目录时,如果index.html或类似文件不存在,它将生成一个您可以导航的文件列表。注意事项是,要查看此文件列表,必须首先输入密码。所有其他请求都不需要密码,包括index.html文件和包含index.html文件的目录,它们都应该在没有任何身份验证的情况下呈现。这不起作用,因为我需要人们能够链接到服务器上的文件,而无需输入密码。重新编辑:系统有数千个目录,我不能为每个目录都自定义.htaccess。@Jason Keene:a.htaccess配置文件也会影响其子目录。是, 但这不是问题所在。在非常基本的语言中,我希望这样做,当您请求目录时,如果index.html或类似文件不存在,它将生成一个您可以导航的文件列表。注意事项是,要查看此文件列表,必须首先输入密码。所有其他请求不应要求密码,包括index.html文件和包含index.html文件的目录,它们都应在不进行任何身份验证的情况下呈现。