.htaccess中的Require指令可防止显示目录

时间:2012-05-22 17:20:34

标签: apache .htaccess apache2 webserver authorization

我有以下目录层次结构

-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 user指令来控制对它们的访问?

1 个答案:

答案 0 :(得分: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

作为第一行。