我有以下目录层次结构
-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
作为第一线.