100

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

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

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

AuthName "站点管理"
AuthUserFile /dir/.htpasswd
AuthGroupFile /dev/null

AuthName 安全
AuthType 基本
需要用户名1
命令允许,拒绝
允许所有人
4

6 回答 6

162

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

# allows any user to see this directory
Satisfy Any

Apache 2.4 中更改了语法,这具有相同的效果:

Require all granted
于 2009-09-16T07:02:02.683 回答
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!

于 2011-08-21T15:42:46.740 回答
9

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

Allow from all

您只能通过以下方式限制您的 IP:

Allow from x.x.x.x

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

于 2014-06-09T08:36:28.443 回答
2

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

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

注意:这适用于 Apache 2.4。我还没有确认早期版本。

于 2018-12-18T16:17:05.227 回答
1

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

于 2009-09-16T07:00:08.410 回答
0

如果您想阻止任何特定的directoty 进行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 预防中删除。

于 2018-04-09T06:53:20.443 回答