Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 密码保护自动索引,但不使用.htaccess保护静态文件_Apache_Authentication_.htaccess_Mod Rewrite_Mod Autoindex - Fatal编程技术网

Apache 密码保护自动索引,但不使用.htaccess保护静态文件

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

我的Web服务器上有可公开访问的文件。我想启用自动索引选项+索引,但需要密码才能查看这些列表。我在设置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)
只需删除该块即可将其应用于所有请求,而不仅仅是那些请求目录

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文件的目录,它们都应在不进行任何身份验证的情况下呈现。