
特定のディレクトリに対して 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 を設定し、特定のディレクトリ (Web サイト、ドメイン) に対してのみロックを解除したいと思います。
では、特定のディレクトリを除くサーバー上のすべての場所で 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 を使用しないようにして、ハード ドライブへのアクセスを減らすと、Web サイトのパフォーマンスが向上します。