如何在任何地方设置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呢?

任何后续的定义都应该覆盖apacheconfiguration文件中的前一个定义。 尝试下面,它应该修复它。

 <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 

欲了解更多信息,请看: 在这里 , 在这里 , 在 这里

PS: 整个问题的简短答案

这是您的主要身份validation

 <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,如果可以,减less硬盘访问,你会增加你的网站的性能。