Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache htaccess中的Require指令阻止显示目录_Apache_.htaccess_Apache2_Webserver_Authorization - Fatal编程技术网

Apache htaccess中的Require指令阻止显示目录

Apache htaccess中的Require指令阻止显示目录,apache,.htaccess,apache2,webserver,authorization,Apache,.htaccess,Apache2,Webserver,Authorization,我有以下目录层次结构 -root_folder .htaccess -sub_folder .htaccess sub_文件夹中.htaccess文件的内容: AuthType Basic AuthName "webdav" AuthUserFile /var/www/test/passwd.dav Require user test root\u文件夹包含以下内容.htaccess Satisfy any Order deny,allow Deny from al

我有以下目录层次结构

-root_folder
   .htaccess
   -sub_folder
       .htaccess
sub_文件夹中.htaccess文件的内容:

AuthType Basic
AuthName "webdav"
AuthUserFile /var/www/test/passwd.dav
Require user test
root\u文件夹
包含以下内容
.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>
Alias/webdav/home/user/projects/test/public
命令允许,拒绝
允许来自此处的IP列表
达文
乘客逃走了
LimitXMLRequestBody 0
选项索引跟随符号链接
问题是,当我尝试使用浏览器访问
localhost/webdav/root\u folder/
文件夹时,不会显示
sub\u文件夹
。 但是,当我删除
Require user some_user
指令时,列表中会显示
子文件夹
。如果我尝试在启用“需要用户”指令时输入
localhost/webdav/root\u folder/sub\u folder/
,系统会要求我输入登录名和密码,如果输入正确的凭据,一切正常

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

在您的根文件夹中(我相信这是您的
$DOCUMENT\u root
)创建包含以下内容的.htaccess文件:

SetEnvIfNoCase Request_URI "^/*$" ALLOWED

Satisfy        any
Order          deny,allow
Deny from      all
Allow from     env=ALLOWED
如果
root\u文件夹
不是$DOCUMENT\u root,则使用:

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

作为第一行。

谢谢您的回复。现在显示了
子文件夹
,但是当我点击它时,我没有被要求输入我的登录名和密码。我的目标是在不隐藏的情况下控制对不同目录的访问。在我的设置中,当我从列表中单击sub_文件夹时,它会要求输入登录名/密码。你能从根文件夹和子文件夹发布你的.htaccess吗?在我的Apache安装中,我尝试了所有方法,但它总是列出根文件夹中的子文件夹,并在单击子文件夹时询问登录名/密码。我唯一没有的就是加载了mod_dev和DAV。我想,
满足任何
指令都会破坏我的方案,因为我在
webdav
配置文件
/etc/apache2/conf.d
中有
Allow from#一长串IP
。此ip列表包含
127.0.0.1
,因此如果我尝试访问一些
sub_文件夹
Apache的配置解析器会找到此指令并允许访问此
sub_文件夹
。事实上,如果满足
allow
指令中的任何条件,它将允许访问。使用
满足所有要求
仍会阻止显示目录。如果我使用
满足任何
并从#ip列表中删除
允许
来自
webdav
文件,则一切都如您所述。哦,我知道我怀疑DAV的内容。但很高兴知道你找到了根本原因。我怀疑,如果您从一个不在webdav允许列表中的IP访问您的web服务器,它的行为将与我描述的完全相同。