「.htaccess」についての備忘録です。
その第3回
.htaccessで認証制限ページを設定する
.htaccess を使うと、たとえばFile Not Found(404)ページのカスタマイズ、SEO対策などのために.phpのページを.htmlとして振る舞う、特定のIPアドレスやプロバイダからのアクセスを制限するなど、数えきれないほどさまざまなことができる【4】。
まずは、【5】のようなIDとパスワード画面を出すアクセス制限の設定方法を解説しよう。認証制限には「Basic」と「Digest」の2種類がある。「Basic」は入力されるIDとパスワードを特に暗号化せず、「Digest」は暗号化するという違いがある。以前は対応するブラウザの関係で「Digest」が使いづらかったが、現在はほとんどのブラウザが対応しているので「Digest」の使用に問題はない。簡易のアクセス制限ならばBasicでよいが、ある程度きちんと守らなければならない情報を扱うのであればDigestを使おう。
まずテキストエディタを開いて【6】のように書き込む。1行目「AuthUserFile」はIDとパスワードが入った「.htpasswd」というファイルの場所。2行目「AuthGroupFile」は、グループごとにアクセスを許可する場合に用いる。「/dev /null」とはそのようなファイルは存在しないという意味になる。「AuthName」はダイアログで表示するメッセージだ。「AuthType」は先ほどのBas icかDigestを入れる。さらに【6】に続けて【7】のように書き、ブラウザから「.ht」で始まるファイルにアクセスできないようにする。ホスティングサーバによってはあらかじめそのような設定がされているところもあるが、念のため設定しておこう。
次にIDとパスワードの入ったファイル「.htpasswd」をつくる【8】。「:」の前にID、後ろにパスワーを入れる。厄介なのはここに書いてあるパスワード「Y1mvjtpAMjCV.」が実際の認証画面で入力するパスワードではないということだ。ちなみにもともとのパスワードは「201003」だ。サーバにおける暗号化の設定によって文字が変換され、.htpasswdに書くのはその変換された文字列のほうなのだ。この文字列はサーバサイドに打ち込んで吐き出すのが本来のやり方だが、残念ながらこれはサーバをそれなりに扱える人でなければ難しい。その場合はWebにIDとパスワードを自動生成するサービスがあるのでこれを利用して変換しよう。
ただし、この暗号化もいくつかのパターンがあるため、自動生成サービスの変換パターンが自分の使用するサーバのものと同じとは限らず使えない場合もある。そのときは別のサービスを使用するなどして対処しよう。また、一部のホスティングサーバでは、暗号化文字列や.htpa sswdファイルを生成してくれる機能を搭載しているところもあり、このようなサービスを使うのもお勧めだ。
できた.htaccessを先ほどの方法で認証をかけたいページのところへアップロードする。.htpasswdは安全を期すため、なるべくWWWより上の階層(Webサーバではない部分)に置いておきたい。これで、.htaccessのある階層以下のファイルにブラウザでアクセスすると、認証画面が現れる。
【4】
.htaccessを使ってできることの一例。アクセス制限のほかにも、7行目以降のようないわゆる「転送系」と呼ばれるものもある
【5】
Internet Explorerでの認証ダイアログの表示
【6】
3行目の認証画面に表示されるメッセージは半角「”」で囲う。日本語も使用できる
【7】
「.ht」で始まるファイルへのアクセスを禁止する設定。これで、.htaccessと.htpsswdにブラウザからはアクセスできないようになる
【8】
「:」の前がID、後ろがパスワードになる。改行すればIDとパスワードのセットを複数設定できる(ここでは例としてID 「webcreators」パスワード「201003」とID 「mdn」パスワード「201004」の二組を記載している)