如何从子目录中删除.htaccess密码保护


96

我已使用密码保护了我的整个网站,.htaccess但是我想公开其中一个子目录,以便无需密码即可查看它。

如何禁用子目录的htaccess密码保护?具体来说是什么.htaccess语法。

这是.htaccess放在ftp根目录中的文件。

AuthName“网站管理”
AuthUserFile /dir/.htpasswd
AuthGroupFile / dev / null

AuthName安全
AuthType基本
需要用户名username1
订购允许,拒绝
允许所有人

4
这可能更适合于服务器故障。

Answers:


153

您需要.htaccess在所需目录中创建一个新文件,并Satisfy any在其中包含伪指令,最多适用于Apache 2.3:

# allows any user to see this directory
Satisfy Any

在Apache 2.4中更改了语法,其效果相同:

Require all granted

7
我只能Allow from all不这样做Satisfy Any
杰西·特尔福德

@JessTelford很好地使用了代码片段。@RageZ +1对我有用的答案。您能否将答案编辑得非常简单,然后使用代码片段方法将其发布。否则,有人将不得不思考thanks
Jesse Burcsik 2013年

2
@JessTelford Satisfy Any正在工作,拼写为Satisify Any。可能就是这对您不起作用的原因。
BlueBird 2014年

1
我需要使单个文件不受保护(所有其他内容都受保护),在<Files>部分中进行了相同的操作
Nick

这对我不起作用-我仍然收到要求用户名和密码的密码模式。使用firefox和Windows 7 ...有人有什么主意吗?
ItsMeDom

36

在RageZ的答案中,我在服务器指令中使用了它:

<Directory /var/www/protected/>
     AuthType Basic
     AuthName "Production"
     AuthUserFile /path/to/.htpasswd
     Require valid-user
</Directory>

<Directory /var/www/protected/unprotected>
     Satisfy Any
</Directory>

太棒了 谢谢RageZ!



1

您需要将另一个.htaccess文件添加到覆盖身份验证的子目录中。.htaccess向上层叠,即它将在当前文件夹中查找,然后向上一级,依此类推。


4
你碰巧知道语法吗?我了解这个概念,但不知道如何实施。
justinl

如果要删除当前的和不使用的权限,只是一个空文件名为.htaccess的替换
Gaʀʀʏ

3
@Garry并不是.htaccess级联的工作方式,您必须显式覆盖选项。
威廉·丹尼斯

1

这是通过站点上主.htaccess文件中的基本身份验证允许子目录“ foo”的方法:

AuthType Basic
AuthName "Password Required"
AuthUserFile /dir/.htpasswd
Require expr %{REQUEST_URI} =~ m#^/foo/#
Require valid-user

注意:这在Apache 2.4中有效。我尚未确认较早的版本。


0

如果要防止htaccess身份验证出现任何特定的方向性,则可以在htaccess文件顶部使用以下代码。

AuthType Basic AuthName "Enter Pass" AuthUserFile /home/public_html/.htpasswd /*PATH TO YOUR .htpasswd FILE*/ Require valid-user SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow Order allow,deny Allow from env=allow

另外,如果要防止多个目录,请添加

SetEnvIf Request_URI "(/DIRECTORY_NAME/)$" allow

您想从htaccess防护中删除尽可能多的目录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.