当为特定目录设置 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,以减少硬盘访问,这样可以提高网站的性能。