4

我有以下目录层次结构

-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我会被要求输入登录名和密码,如果我输入正确的凭据,一切正常。

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

4

1 回答 1

2

在您的 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

作为第一行。

于 2012-05-22T22:01:41.913 回答