2008-03-03
■[Apache]特定のサブディレクトリに別のBASIC認証をかける
BASIC認証のかかっているディレクトリがあり、そのサブディレクトリに別のBASIC認証をかけたい場合があったのでメモ。
たとえば、http://example.com/hoge/ にすでにBASIC認証がかけられているが、http://example.com/hoge/fuga/ に別のBASIC認証「だけ」をかけたい、といった場合です。
簡単に考えると、<Directory>ディレクティブや<Location>ディレクティブを2つ並べればうまくいきそうなもんですが、両方の認証がかかってしまいます。
そこで、<Directory>ディレクティブと<Location>ディレクティブの両方を使うと期待通りに動作しました。具体的な設定例は次の通り。
<Location ~ "^/hoge/fuga"> AuthType Basic AuthUserFile /path/to/.htpasswd.fuga AuthName "Enter password for fuga" Require valid-user </Location> <Directory "/path/to/hoge/"> AuthType Basic AuthUserFile /path/to/.htpasswd.hoge AuthName "Enter password" Require valid-user </Directory>
これは
マージの順番は以下のようになっています:
1. <Directory> (正規表現無し) と .htaccess を同時に (.htaccess が許可されていれば、それが <Directory> を上書きします)
2. <DirectoryMatch> (と <Directory ~>
3. <Files> と <FilesMatch> を同時に
4. <Location> と <LocationMatch> を同時に
<Directory> 以外は、それぞれのグループは設定ファイルに現れた順番に処理されます。 <Directory> (上のグループ 1) はディレクトリが短いものから長いものへと処理されます。
:
後のセクションのディレクティブが前のセクションのものを上書きします。
セクションのマージ方法 - セクションの設定 - Apache HTTP サーバ
のとおり、<Location>ディレクティブの設定が<Directory>ディレクティブの設定を上書いているためです(のハズ)。
- 258 http://www.developer0000.jp/2008/03/04/2226/
- 95 http://d.hatena.ne.jp/
- 94 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=jjp&q=BASIC認証+ディレクトリ&btnG=検索&lr=lang_ja
- 87 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLJ,GGLJ:2006-44,GGLJ:ja&q=AuthType+Basic+認証
- 82 http://reader.livedoor.com/reader/
- 76 http://b.hatena.ne.jp/entry/7728302/特定のサブディレクトリに別のBASIC認証をかける - Do You PHP は%
- 59 http://php.designlinkdatabase.net/data/106839.aspx
- 55 http://php.designlinkdatabase.net/data/frame_106839.aspx
- 53 http://www.google.co.jp/search?q=Basic認証 basic&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox
- 52 http://b.hatena.ne.jp/entry/7728302








