こせきの技術日記

2006-01-17

[] サイト全体でかけられているBasic認証で一部のディレクトリの認証を解除する方法

    <Location />
        AuthType Basic
        AuthName "secret room"
        AuthUserFile "..."
        Require valid-user
    </Location>
    <Location /subdir/>
        Order allow,deny
        Allow from All
        Satisfy Any
    </Location>

Satisfy Anyを設定するのが重要。これを設定しないと、「パスワード(AuthType Basic) AND アクセス元(Allow from All)」というAND条件で制限がかかってしまう(みたい)。Satisfy Anyを設定すると、「パスワードORアクセス元」のOR条件になってBasic認証が外れる(ようだ)。

Locationで認証をかけた場合、Directoryセクションで解除できないので注意。

もっと具体的な、次の例を考えてみましょう。 <Directory> セクションに設置されたアクセス制限に関わらず、 <Location> セクションが最後に評価されて、サーバへのアクセスは制限されません。言い換えれば、マージの順番は重要で、注意して使用してください!

<Location />
Order deny,allow
Allow from all
</Location>

# Woops! This <Directory> section will have no effect
<Directory />
Order allow,deny
Allow from all
Deny from badguy.example.com

この日の他の記事も参照。