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

时间:2009-09-16 06:56:11

标签: .htaccess password-protection subdirectory

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

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

这是我的.htaccess文件放在我的ftp。

的根目录中
AuthName "Site Administratrion"
AuthUserFile /dir/.htpasswd
AuthGroupFile /dev/null

AuthName secure
AuthType Basic
require user username1
order allow,deny
allow from all

6 个答案:

答案 0 :(得分:143)

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

# allows any user to see this directory
Satisfy Any

Apache 2.4中的语法发生了变化,这具有相同的效果:

Require all granted

答案 1 :(得分:33)

添加到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!

答案 2 :(得分:8)

只需使用此指令在所需的子目录中创建一个新的.htaccess

Allow from all

您只能使用以下内容限制IP:

Allow from x.x.x.x

请参阅:http://httpd.apache.org/docs/current/mod/mod_access_compat.html

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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

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

答案 5 :(得分: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预防中删除。