排除htaccess受保护目录中的一个文件夹

She*_*ght 24 apache authentication .htaccess

我有一个受htaccess保护的目录.这是我现在使用的代码:

AuthName "Test Area"
Require valid-user
AuthUserFile "/***/.htpasswd"
AuthType basic
Run Code Online (Sandbox Code Playgroud)

这工作正常.不过,我现在有这个文件夹,我想允许任何人访问内部的目录,但我不知道该怎么做.

我知道可以将文件移动到受保护目录之外,但是为了简单说明文件夹需要保留在受保护文件夹中,但所有人都可以访问.

如何限制对文件夹的访问,但允许访问子文件夹?

小智 42

只需在子目录中创建一个.htaccess文件,其中包含以下内容:

Satisfy any

  • 这可以工作,但如果由于`mod_rewrite`的东西没有目录会怎么样. (4认同)

Sud*_*oti 16

根据这篇文章,您可以通过使用来完成此任务SetEnvIf.您匹配要访问的每个文件夹和文件,并为它们定义环境变量"允许".然后添加一个允许访问的条件(如果存在此环境变量).

您需要将以下指令添加到.htaccess中.

SetEnvIf Request_URI "(path/to/directory/)$" allow
SetEnvIf Request_URI "(path/to/file\.php)$"  allow
Order allow,deny
Allow from env=allow
Satisfy any
Run Code Online (Sandbox Code Playgroud)


seb*_*ian 7

对于新的Apache版本,接受的答案似乎并不顺利,因为一旦我的某些客户服务器上推出Apache更新,它就会停止工作.

我推荐以下方法:

AuthType Basic
AuthName "NO PUBLIC ACCESS"
AuthUserFile /xxx/.htpasswd

SetEnvIf REQUEST_URI "(path/to/directory/)$" ALLOW

<RequireAny>
  Require env ALLOW
  Require valid-user
</RequireAny>
Run Code Online (Sandbox Code Playgroud)