Apache全般に関する設定は「httpd.conf」で行ないますが、ディレクトリ単位で設定が必要な場合は「.htaccess」を使用します。
ディレクトリをアクセス不可能にしたり、認証ダイアログを出力しパスワードを入力しないと閲覧できないようにするなどの設定ができます。
本来それらの設定は「httpd.conf」で行なうことが望ましいのですが、「httpd.conf」を編集するには管理者権限が必要であるため、Webサーバーの管理者しか編集できません。しかし、Webサイトの管理者がWebサーバーの管理者であるとは限りません。例えば当サイトはレンタルサーバー上で公開していますが、そのような共有型サービスでは、当然、ユーザーひとりひとりに管理者権限が付与されるようなことはありません。しかし、Webサイトを運営していく上で、パスワードを設定して閲覧できるユーザーを限定したいなどの要望もあるでしょう。そのような要望に応えるためには一般ユーザーでもApacheの設定を変更できる仕組みが必要です。そこで出てくるのが「.htaccess」です。
「.htaccess」ファイルは、ユーザーに付与されたアクセス権限で設置し、設定します。「httpd.conf」に記述することができる設定のうちの多くは「.htaccess」にも記述することができます。
ただ、一般ユーザーにあれこれWebサーバーの設定を変更されると、サーバー負荷がかかる設定をされたり、セキュリティホールが発生する危険性があります。そのような事態を防ぐため、「.htaccess」で設定できる内容は「httpd.conf」で制限するのが一般的です。
「.htaccess」も「httpd.conf」と同様に構文があります。もし構文エラーがあると “500 internal server error” (サーバー内部エラー)をクライアント(Webブラウザ)に返します。「httpd.conf」の場合、構文エラーがあったらApacheの起動に失敗しますが、「.htaccess」は、実際に当該ディレクトリにアクセスしてみないとエラーかどうかわからないため、設置する場合は十分な動作確認が必要です。
「.htaccess」の主な使われ方として以下のようなものがあります。
ユーザーIDとパスワードによる制限 | Basic認証やDigest認証を用いて特定のユーザーIDとパスワードを入力しないと閲覧できないようにする。 |
IPアドレス・ホスト名による制限 | 特定のIPアドレスもしくはホスト名からのアクセスのみを許可、あるいは拒否する。 |
エラーメッセージのカスタマイズ | ユーザーID・パスワード不正、アクセス許可がない、ページが見つからない、サーバーエラーが発生した場合等、エラーメッセージを独自のものに設定できる。 |
MIMEタイプの指定 | MIMEタイプを用いてファイル種類(jpg、pdf、zipなど)を判別する。 |
上記はあくまで一例であり、他にも検索エンジンにキャッシュされないようにするなど様々な設定が可能です。