我使用.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
答案 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预防中删除。