如何在除某些目錄之外的所有地方設定 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,如果可以的話,減少硬碟訪問,你會像這樣提高你的網站效能。

相關內容