開発中のサイトや管理画面など一般の人には公開せずに、特定の人にだけアクセスを許可したいページやディレクトリがあると思います。その場合は「Basic認証」という認証を設定することで実現することが可能です。
.htpasswdファイルの作成を行なう
最初にユーザー名・パスワードの設定ファイルの作成を行います。配置場所は制限をかけたいディレクトリでも良いですが、可能であれば「docroot」より上の階層の方が良いかと思います。「docroot」以下にしか設置できない場合は「.htpasswd」が外から見えないように注意してください(Apacheのデフォルト設定で「.ht」から始まるファイルは見えないようになっているので設置しても基本的には問題ありません)
$ cd {ユーザー名・パスワードファイルを設置する場所}
$ htpasswd -c .htpasswd {ユーザー名}
New password: {パスワード}
Re-type new password: {パスワード}
Adding password for user {ユーザー名}
.htaccessファイルの作成を行なう
次に上記で設置した「.htpasswd」を読み込む「.htaccess」を作成します。既に「.htaccess」がある場合は追記をしてください。
$ cd {制限をかけたいディレクトリ}
$ vi .htaccess
AuthUserFile {.htpasswdのフルパス}
AuthGroupFile /dev/null
AuthName "Basic Auth"
AuthType Basic
Require valid-user
それぞれの項目の意味は以下となります。詳しく知りたい人は自分で調べてみてください。
AuthUserFile | .htpasswdが設置してあるファイルパス。 |
AuthGroupFile | アクセス制限をするグループ。 「/dev/null」は制限しないの意味となります。 |
AuthName | ダイアログに表示される文章です。 日本語だと文字化けすることがあります。 また、ブラウザによっては表示されない場合もあります。 |
AuthType | 認証の方式 |
Require | アクセスを許可するユーザー名。 「valid-user」はユーザー名とパスワードが一致すれば 誰でも許可するの意味となります。 |
Apacheの再起動を行なう
設定を反映するにはApacheの再起動が必要なので再起動を行ないます(再起動しなくても反映される場合もあります)
$ service httpd restart
再起動が完了したらBasic認証を設定したディレクトリにアクセスしてみてください。以下のようなIDとパスワードの入力を求めるダイアログが表示されて、設定したユーザー名・パスワードでログインできたら設定は完了となります。
それではみなさん、自由なWEBライフをお過ごしください!