apache – .htaccess中的Require指令阻止显示目录

我有以下目录层次结构

-root_folder
   .htaccess
   -sub_folder
       .htaccess

sub_folder中.htaccess文件的内容:

AuthType Basic
AuthName "webdav"
AuthUserFile /var/www/test/passwd.dav
Require user test

root_folder包含以下.htaccess

Satisfy any
Order deny,allow
Deny from all
Allow from env=ALLOWED
SetEnvIfNoCase Request_URI "^/+webdav/root_folder/?$" ALLOWED

请注意,我正在使用WebDav.

它在/etc/apache2/conf.d/webdav中设置.该文件包含以下内容:

Alias /webdav /home/user/projects/test/public
<Location /webdav/>
    Order Allow,Deny
    Allow from #list of ips here
    DAV On
    PassengerEnabled off
    LimitXMLRequestBody 0
    Options Indexes FollowSymLinks
</Location>

问题是,当我尝试使用浏览器访问localhost / webdav / root_folder /文件夹时,不会显示sub_folder.
但是当我删除Require user some_user指令时,sub_folder会显示在列表中.如果我尝试输入localhost / webdav / root_folder / sub_folder /当启用了Require user指令时,我被要求输入登录名和密码,如果输入正确的凭据,一切正常.

是否可以列出目录中的所有内容,同时在sub_folders中的.htaccess文件中使用require用户指令来控制对它们的访问?

最佳答案 在你的root_folder中(我相信这是你的$DOCUMENT_ROOT)创建.htaccess文件,其中包含以下内容:

SetEnvIfNoCase Request_URI "^/*$" ALLOWED

Satisfy        any
Order          deny,allow
Deny from      all
Allow from     env=ALLOWED

如果root_folder不是$DOCUMENT_ROOT,那么使用:

SetEnvIfNoCase Request_URI "^/+root_folder/?$" ALLOWED

作为第一线.

点赞