特定のディレクトリを除くすべての場所で 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 を設定し、特定のディレクトリ (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 サイトのパフォーマンスが向上します。

関連情報