如何在某些目录之外的所有地方设置 BasicAuth

如何在某些目录之外的所有地方设置 BasicAuth

当为特定目录设置 BasicAuth 保护时,我使用简单的设置(在apache2.conf文件中):

<Directory /var/www/somedir/>
Deny from all
AuthUserFile /var/pswd/somedir/.htpasswd
AuthName authorization
AuthType Basic
Satisfy Any
require valid-user
</Directory>

但我想默认在服务器上的所有地方设置 BasicAuth,并仅为特定目录(网站、域)解锁。

那么,如何在服务器上除某些目录之外的所有地方设置 BasicAuth?

答案1

任何后续定义都应覆盖 apache 配置文件中的先前定义。尝试以下操作,应该可以解决问题。

<Directory /var/www/>
  Order deny,allow
  Deny from all
  AuthUserFile /var/pswd/somedir/.htpasswd
  AuthName authorization
  AuthType Basic
  Satisfy Any
  require valid-user
</Directory>

Alias /path/to/opendir/ /public
<Directory /var/www/opendir/>
  Allow from all
</Directory>

您还可以.htaccess通过添加以下内容来控制它:

Override Auth
Allow from all
Satisfy any

更多信息请参见: 这里这里这里&这里

答案2

这是您的主要身份验证

<Directory /var/www/somedir/>
    Order deny,allow
    Deny from all
    AuthName "User Authentication"
    AuthType Basic
    AuthUserFile /var/pswd/somedir/.htpasswd
    Require valid-user
</Directory>

这是你的文件夹例外

<Directory /var/www/somedir/accessibleDir/>
    Allow from all 
</Directory>

要在您的用户列表中添加用户,请使用:

htpasswd -b -m /var/pswd/somedir/.htpasswd {User} {Pass}

如果可以的话,尽量不要使用 .htaccess,以减少硬盘访问,这样可以提高网站的性能。

相关内容