限制对 apache2 web root 的访问,但允许它访问子文件夹

raz*_*or7 3 configuration apache2

我需要限制通过密码访问我的 web root apache 测试服务器(即http://localhost)但允许访问子文件夹(即:http://localhost/testsite

我确实创建了 .htpasswd 和 .htaccess,并将 .htaccess 放到了 web root (http://localhost) 所以当试图访问 web root 时,它要求用户并通过,但在子文件夹中也是如此(即:试图访问http://localhost/testite )

我想在 web root 上被要求输入密码,而不是在子文件夹上。

那可能吗?

Huc*_*kle 5

好像你让Apache将需要为您的Web根密码,但你戴尔Apache将不会需要它的所有其他目录?

在你的 .htaccess(或在 httpd.conf 中,他们做同样的工作)你可能有如下内容(在你的 .htaccess 文件中添加一个 pastebin 链接,我可以准确地做到这一点):

<Directory "/www/private">
   Order allow,deny
   Allow from all

   Options Indexes
   AuthType Basic
   AuthName "Private Access"
   AuthUserFile "/www/private/.htpasswd"
   Require valid-user
</Directory>
Run Code Online (Sandbox Code Playgroud)

但这也适用于该路径下的所有目录。否则,您需要明确告诉 Apache。

<Directory "/var/private/subdir">
    Satisfy any
</Directory>
Run Code Online (Sandbox Code Playgroud)

您可以使用正则表达式 with<DirectoryMatch "regex">来概括这一点,只是不要忘记防范asdf.com/subdir/../表达式。

更新:还值得一提的是,虽然大部分文档已经有<Directory[Match]>指令,但也有一些<Location[Match]>指令对底层文件系统上的符号链接很有帮助。