今回は、複数のURLに対してBasic認証をかける方法を紹介する。
認証設定の記述については、Apacheのhttpd.confに書く方法と、.htaccessファイルに書く方法があるが、今回は後者について取り上げていく。
.htaccessコード全文
まずは全文を見てもらおう。
AuthUserFileに指定している.htpasswdのパスについては、環境によって変更が必要だが、基本的にはこれで正常に動作するはずだ。
Satisfy Any
AuthUserFile /var/www/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Input ID and Password."
AuthType Basic
SetEnvIf Request_URI "(admin|dev)" auth_chk
require valid-user
Order Allow,Deny
Allow from all
Deny from env=auth_chk
ポイントは6行目。
.htaccessでは<Directory>や<Location>を書くことができないので、SetEnvIfを利用する。
Request_URIに指定した条件に合致した場合、認証ID・パスワードの入力が求められるようになる。
なお、今回指定した条件は「adminまたはdevが含まれる」URLに対して認証をかけるという条件だ。
条件には正規表現が使用できるので、かなり柔軟に条件指定を行うことができる。