.htaccess とは

.htaccess」は、Web サーバープログラムApacheの挙動を決定する設定ファイルの一つです。UNIX の慣習で、「.」(ドット)で始まるファイル名のファイルは、設定ファイルであることを意味しています。通常、サーバの設定はhttpd.conf(/usr/local/apache/conf/httpd.conf) ファイルにて設定されますが、このファイルを編集することができるのはサーバ管理者のみとなっています。よって、レンタルサーバ等を使用してWebサイトを運営されている管理者の方は、「.htaccess」ファイルにて自分のWebサイトの設定を行うこと(挙動を決定すること)となります。補足ではありますが、サーバによっては「.htaccess」ファイルの設置を許可しない設定にしている場合もあります。使えるかどうか分からない場合は、まずサーバの管理者に問合せることをお奨めします。

「.htaccess」ファイルは、そのファイルを設置したディレクトリ以下の全てのページに有効となります。例えば、「public_html」に「.htaccess」ファイルを設置した場合、「public_html」内の全てのページ及び、「public_html」以下のディレクトリにある全てのページ(サブディレクトリ全体)が「.htaccess」ファイルの影響を受けます。では、「httpd.conf」と違う設定をした場合、又は、「.htaccess」ファイルを複数設置した場合はどうなるのでしょう。Apacheサーバはまず、「httpd.conf」に書かれているサーバーの設定を有効にします。「.htaccess」ファイルを見つけた場合は、Apacheサーバの設定に「.htaccess」ファイルの設定を上書きします。更に「.htaccess」を見つけた場合、「httpd.conf」の設定に親ディレクトリの「.htaccess」ファイルの設定を上書きした設定を引き継いだまま、子ディレクトリの「.htaccess」の設定が上書きされます。このような操作をApacheは繰り返し行い、出来上がった設定を元にレスポンスを返すのです。ここで、「見つけた場合」と説明していますが、実はこの記述は不適切です。Apacheサーバの設定ファイルである「httpd.conf」ファイルにて「.htaccess」ファイルの設置が許可されている場合、Apacheサーバは全てのディレクトリにおいて、「.htaccess」ファイルが在るかどうかを調査します。無ければ何もしませんし、在れば設定を変更します。つまり、「.htaccess」ファイルの設置が許可されている以上はこの調査は強制的に行われますので、「.htaccess」ファイルを設置したからといってパフォーマンスが極度に下がることはありません。

ここまで「.htaccess」ファイルの実態については何も触れませんでしたが、何のことは無いただのテキストファイルです。当然、初期状態ではサーバ上にありませんので、自分で作らなければなりません。Windows環境で作成する場合には、メモ帳などのテキストエディタにて内容を編集し、「.htaccess」と言うファイル名で保存をして下さい。「.htaccess」ファイルが出来上がったら、FTPクライアントソフト等を用いてWebサーバへアップロードします。設定を有効にしたいディレクトリに転送してください。ここで、気をつけなければならないことが一つあります。FTPクライアントソフトの中には「.htaccess」ファイルを勝手にバイナリ転送してしまうものがあります。「.htaccess」ファイルはテキストファイルですので、ASCII転送モードでアップロードをして下さい。パーミッションは、HTMLファイルと同様の(例:644)にしておけば問題ありません。

「.htaccess」ファイルは便利なものなのですが、この構文に記述ミスがあった場合はおおごとです。記述ミスのある「.htaccess」ファイルを設置したディレクトリ以下の全てのページにおいて、「500 Internal Server Error」が出現します(サーバ管理者が許可していない命令を使った場合にも同様のエラーとなります)。設置が不安な方は、まずテストディレクトリを作成し、そこに「.htaccess」ファイルの設置をして動作確認をすることをお奨めします。

当ページでは、Apache 1.3 以上についての記述となっています。Apacheのバージョンによって、「.htaccess」の挙動は若干変化しますので注意が必要です。

わけわからないことばかり書いてあって、そもそもどう記述するのよ!って方のために、記述方法のサンプルを紹介しておきます。サンプルなんて言いましたがあまり深く考えないで下さい。「.htaccess」ファイルの記述は、基本的に構文を羅列するだけでOKです。要はサーバに対して行いたい命令を、順不同に(手当たりしだい)書き連ねていくだけです。

<Files ~ "[^bnr]+\.(gif|jpg)$">
SetEnvIf Referer "^http://www\.7key\.jp" ref_ok
SetEnvIf Referer "^$" ref_ok
order deny,allow
deny from all
allow from env=ref_ok
</Files>

AddHandler cgi-script htaccess

ErrorDocument 401 /401.html
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
ErrorDocument 500 /500.html

簡単ですよね。では、次のページから早速細かい記述方法を紹介していきます。