说到为特定目录设置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硬盘访问,你会增加你的网站的性能。