.htaccessと.htpasswdで簡易ユーザ認証

webで公開しているディレクトリにパスワードをかけて閲覧を制限する簡単な方法。

制限するディレクトリに.htaccessを作って、以下のように記述

AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Secret Area"
AuthType Basic

require valid-user

<Files ~ "^.(htpasswd|htaccess)$">
    deny from all
</Files>

詳しい説明はここを参照。

次に認証ユーザとパスワードを登録。
$ htpasswd -c /var/www/.htpasswd user

パスワードを聞かれるので認証パスワードを入力すると/var/www/.htpasswdファイルが作られ、暗号化した状態でパスワードが保存される。

追加するときは
$ htpasswd /var/www/.htpasswd user

Apacheのドキュメントも参考に。

.htaccessを読み込むためにはAllowOverrideをALLにしないといけないので忘れずに。詳しくはApacheのドキュメント

 

< 2011/08/10 Modified >
localhostからは参照可能にしたい場合は次のようにする

Order Deny,Allow
Deny from all

AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Secret Area"
AuthType Basic

require valid-user

Allow from localhost 127.0.0.1
Satisfy Any

<Files ~ "^.(htpasswd|htaccess)$">
    deny from all
</Files>