httpd.confに次の記述があるかを確認しましょう。
# 次の2行でベーシック認証を有効にします。 # Win版Apacheでは「LoadModule auth_module」は必要ないと思います。 LoadModule auth_module AddModule mod_auth.c # ディレクトリはDocumentRootか、ユーザーディレクトリですね。 <Directory /home/httpd/html> # AuthConfigを指定すると.htaccessで認証定義できるようになります。 # これ以外のオプションを同時に指定してもいいです。 # PHPを使うならOptionsも設定したほうが、いいかもしれません。 AllowOverride AuthConfig </Directory> # 「.ht*」というファイルを直接ブラウザで開けないようにさせるため、 # 以下の設定があったほうがいいです。(初期値で、たぶん設定済みですが確認してください) <Files ~ "^\.ht"> Order allow,deny Deny from all </Files> |
htpasswdがあるかを確認
ユーザーIDやパスワードを保存しておくファイルのメンテナンス・プログラム「htpasswd」があるかを確認してください。
Apacheが使えるならhtpasswdはあるはずですが、一部のレンタル・サーバーなど、htpasswdを起動できない環境もあります。 どうしてもhtpasswdが使えないようなら、Windows版のApahceをインストールして、そのhtpasswdを使ってもパスワード管理はできます。
.htaccessの準備
ユーザー認証したいディレクトリに次のような「.htaccess」という名前のファイルをおきます。
# .htpasswdを設置するディレクトリは任意に決めてください。 # Webで公開しているディレクトリ以外を指定するのがお勧めです。 AuthUserFile /home/USER/.htpasswd AuthName "Page Title" AuthType Basic require valid-user |
パスワード・ファイルの作成とメンテナンス
最初に「.htpasswd」を作るときだけ-cオプションを付けてhtpasswdを起動します。
htpasswd -c .htpasswd USERNAME
これで2度パスワードを聞いてきますので、パスワードを入力してください。
2人目以降は-cオプションを付けずに行います。
htpasswd .htpasswd USERNAME2
パスワードをコマンドラインに直接指定する場合は-bオプションを付けます。
htpasswd -b .htpasswd USERNAME3 PASSWORD
これで準備完了です。ブラウザでユーザー認証を準備したページを開いてみてください。パスワードが聞かれ、作成したユーザーではログインできるなら設定は成功です。
後は、htpasswdを使ってユーザーのメンテナンスをやっていけばいいですね。 パスワードを変更するときは、htpasswdを使えば以前に登録済みのユーザーでは、パスワードが書き換わります。
ユーザーの削除は「.htpasswd」をエディタで開いて、削除するユーザーの行を消せばユーザー自体を削除できます。
なお、ここでは「.htpasswd」というファイル名を使いましたが、ファイル名は.htaccessの記述に合わせれば何でもいいです。
注意として、この.htpasswdはhttpやftpなどで公開されたディレクトリ配下には設置しないでください。これをしてしまうとセキュリティ上好ましくないです。