
當涉及到為特定目錄設定 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,如果可以的話,減少硬碟訪問,你會像這樣提高你的網站效能。