今回は、複数の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に対して認証をかけるという条件だ。

条件には正規表現が使用できるので、かなり柔軟に条件指定を行うことができる。