例えばユーザディレクトリがこのような構成だとします。
taro(ユーザディレクトリ) | |-- public_html(ホームページディレクトリ)
public_html以下にパスワードを掛けるディレクトリ、同じく外にパスワードファイルを置くディレクトリを作ります。例えばこのように:
taro(ユーザディレクトリ) | |-- public_html(ホームページディレクトリ) | | | |-- members(パスワードを掛けるディレクトリ) | |--etc(パスワードファイルを置くディレクトリ)
そして、
ことによって、taro/public_html/members/ディレクトリにパスワードを掛けることができます。
パスワードによるアクセス制限を掛けるには、パスワードファイルを作る必要があります。パスワードファイルとは普通のテキストファイルで、以下のように、ユーザ名:暗号化されたパスワード、の組み合わせを人数分書き込みます。ファイル名は自由です。
なお、ファイルの最後にはかならず改行を入れてください。そうしないと最後のユーザのパスワードが無効になってしまいます。
taro:A/GZHvM.49niw jiro:KthFb6Oh0zj8E hanako:aB2O3FVjzi2OM
この例では、ユーザ「taro」のパスワードは「1111」、ユーザ「jiro」のパスワードは「2222」ユーザ「hanako」のパスワードは「3333」になっています。
パスワードを暗号化するには、htpasswdプログラムを使うのが普通ですが、サーバにhtpasswdがインストールされていない場合がほとんどです。そこで、CGIによるパスワードエンコーダのプログラムが、フリーウェアとしてあちこちのウェブサイトで配布されていますから、それを利用すると便利です。
以下の内容のテキストファイルを用意し、.htaccessという名前で保存します。(もちろん、ユーザの環境に合わせて変更の必要な箇所もあります)Windowsの「メモ帳」ではピリオドが最初に付いたファイル名での保存ができないので、適当な名前を付けて保存した後、名前を変更してください。
下の項目のうち、
AuthType Basic AuthName "Member Page" AuthUserFile /home/taro/etc/.htpasswd AuthGroupFile /dev/null <limit GET POST> require valid-user </limit>
ここまで下準備ができたら、早速以下の二つのファイルをアップロードしましょう。ただし、テキストモードで転送しないと正しく動作しません。
あとは、パスワードを掛けるディレクトリにindex.htmlなどHTMLファイルを入れてみて、動作確認してみましょう。ブラウザでページを表示させようとすると、パスワード入力画面が表示され、ユーザ名とパスワードを入れて表示できるようになればOKです。
こんな例を考えてみましょう。
taro(ユーザディレクトリ) | |-- public_html(ホームページディレクトリ) | | | |-- keiri(keiriグループの参加者のみパスワードが通る) | | | |-- eigyo(eigyoグループの参加者のみパスワードが通る) | |--etc(パスワードファイルを置くディレクトリ)
この場合、パスワードファイルは前と同じ方式で構いません。例えば
taro:A/GZHvM.49niw jiro:KthFb6Oh0zj8E hanako:aB2O3FVjzi2OM
のようなファイルを、さっきと同じように、etcディレクトリに入れておきます。
さて、各グループのメンバー一覧はどこに書いておくのかというと、今度は新しくファイルを用意します。
keiri: taro hanako eigyo: taro jiro
このように、グループID: 参加ユーザID1 参加ユーザID2 ...の形式で書きます。グループが複数ある場合は、行を改めて他のグループも同時に記述できます。これを、例えば.htgroupという名前で、etcディレクトリに入れておきます。
最後に.htaccessファイルですが、今度はグループファイルの設定と、どのグループのアクセスを許可するのかの設定があるので、書き方が少し変わります。以下、それぞれkeiriディレクトリとeigyoディレクトリ用の.htaccessファイルの例を示します。
keiriディレクトリの.htaccess
AuthType Basic AuthName "Member Page" AuthUserFile /home/taro/etc/.htpasswd AuthGroupFile /home/taro/etc/.htgroup <limit GET POST> require group keiri </limit>
eigyoディレクトリの.htaccess
AuthType Basic AuthName "Member Page" AuthUserFile /home/taro/etc/.htpasswd AuthGroupFile /home/taro/etc/.htgroup <limit GET POST> require group eigyo </limit>