ミケネコ研究所 ミケネコ研究所 > htaccess リファレンス > .htaccess ファイルの使い方

.htaccess ファイルの使い方

.htaccess ファイルは、柔軟なサーバ設定を、ユーザ自身が自由に設定することができます。


.htaccess とは?

.htaccess ファイルは、サーバの挙動を決定する設定ファイルのひとつです。通常、サーバの設定は httpd.conf ファイル ( /usr/local/apache/conf/httpd.conf を探してください ) に記述しますが、このファイルはサーバ管理者しか編集できません。一方、.htaccess ファイルは各ユーザが、各ディレクトリ単位で設定できます。

たとえば、サーバ管理者がすでに httpd.conf ファイル中で CGI スクリプトの実行を可能にしているならば、.htaccess ファイルで改めて宣言する必要はありませんが、そうでないなら、あなた自身によって .htaccess に適切な設定を施さなければ CGI スクリプトが有効にならないでしょう。

.htaccess ファイルの作り方から設置まで

.htaccess ファイルはテキストファイルです。初期状態では存在しないので、自分で作らなければなりません。ここでは Windows 環境で、メモ帳を使って作成する例を示します。内容を編集後、「.htaccess」というファイル名で作成して下さい。

こうして出来た「.htaccess」ファイルを、FTP クライアントソフトを用いて Web サーバへアップロードします。このコンフィグレーションを有効にしたいディレクトリに転送してください。たとえばあなたのサイト全体にアクセス制限をかけようとするなら、public_html 直下に転送します。

FTP の転送モードには注意して下さい。.htaccess ファイルはテキストファイルですので、「ASCII 転送」モードでアップロードしてください。たいがいの FTP クライアントでは、自動設定のとき .htaccess ファイルを「バイナリ転送」してしまうので、この点に注意が必要です。

.htaccess ファイルのパーミッションは、HTML ファイル同様のパーミッション(例:644)にしておきますが、アップロードした時点でそうなっているでしょうから、変更の必要はないでしょう。

public_html に設置した場合、public_html 以下すべてのリソースが .htaccess の影響を受けます。他のディレクトリに設置した場合、そのディレクトリおよびサブディレクトリ全体に影響を及ぼします。

.htaccess ファイルを複数設置した場合はどうなるのでしょうか。Apache サーバはまず、httpd.conf に書かれているサーバーの設定を有効にし、次に .htaccess ファイルがある場合は、その設定をオーバーライドします。.htaccess が複数見つかった場合、親ディレクトリの .htaccess の設定を引き継いだまま、子ディレクトリの .htaccess の設定が追加・変更(オーバーライド)されます。

.htaccess 自体を隠す方法

.htaccess ファイルはその性質上、世界中のユーザが閲覧可能なドキュメントツリー (~/public_html/) 下に設置しなければなりませんが、.htaccess は高度な設定を記述するため、.htaccess ファイル自体が閲覧されるとセキュリティが低下します。

.htaccess ファイルを設置したならば、まずは手持ちの WWW ブラウザで .htaccess が閲覧できるか確認しましょう。もし不幸にも見えてしまったなら、.htaccess ファイルに次の1行を加えましょう(*)。

AddHandler cgi-script htaccess

これで、手軽に .htaccess ファイル自体の閲覧を拒否できます。

*: あなたがサーバ管理に長けている方なら、なぜこのような邪道とも言える方法を採るのか不思議に思うかもしれません。確かに、正攻法は <Files> ディレクティブによって拡張子 ht で始まるファイルのアクセスを禁じる手段です。しかし、<Files> は最低でもパターンマッチングが必要になるし、正規表現すら使えますので、多くの ISP は比較的重い処理の部類に入るこのディレクティブを許可したがらないのです。それに比べれば、AddHandler は、多くのプロバイダが許可している可能性が高いといえます。

コメント行

# から始まる行はコメント行として扱われます。

この .htaccess リファレンス内でも、頻繁にコメント行が使って説明の補足を行っていますが、コメント行は必須ではありません。

htaccess の文法エラー

.htaccess ファイルに文法誤りがあると、そのディレクトリ以下のどんなファイルにアクセスしようとしても、500 Internal Server Error が発生します。

Apache のバージョンの問題

本書は、Apache 1.3 以上についての記述です。Apache のバージョンによって、.htaccess の挙動は若干変化します。高度な設定を施す場合には、古い Apache をお使いの方はお気をつけ下さい。

サーバ設定の問題

サーバの設定によっては、.htaccess ファイルの設定が無効になっていたり、設置場所が限定されていたり、ディレクティブの限定的な使用しか出来ない場合があります。したがって、本書の内容すべてがあなたのサーバに適用できるとは限りませんので、ご注意ください。

また、サーバ管理者が許可していない .htaccess 命令を使うと、文法誤りのときと同様に 500 Internal Server Error が発生します。

パフォーマンスの問題

.htaccess ファイルを有効にすると、http://www.mikeneko.ne.jp/1/2/3/4/5/6/7/index.html へのアクセスを要求された場合、

各ディレクトリの .htaccess の存在確認を行い、この場合では実に 8 回もの走査が行なわれるため、サーバのパフォーマンスが低下します。ですので、サーバ管理者にとっては、.htaccess の使用を無効にしたくなることでしょう。あるいは、ユーザールート(/~user/ 直下) に唯一置くことのできるように限定しているところもあります。

しかし、.htaccess ファイルが有効になっている場合、どのみち走査は免れませんので、あなたが .htaccess ファイルを使おうと使うまいと、サーバへの影響はほとんど変わりません。せっかく .htaccess が使える環境にあるなら、気兼ねなく設定しましょう。

.htaccess の正体は何なのですか?

より理解を進めるために、少しだけ技術的な部分に立ち入ることにします。.htaccess ファイルは、Apache の設定ファイルのひとつです。UNIX の慣習で、ドットで始まるファイル名は設定ファイルであることを意味しています。.htaccess を知るには、 Apache とは何かを知らなければなりません。

Apache は世界で6割強のシェアを持つ、無料の Web サーバープログラムです。たとえばあなたが Web サイト「http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/」を見たいと思ったとき、あなたのブラウザーはサイト mikeneko.ne.jp へ「このページが見たい」と依頼します。その依頼は、Apache プログラムに伝えられます。通常ですと、

HTTP/1.1 200 OK (はい、このページですね、わかりました。お見せしましょう。)

という快い返事とともに、ページの内容も併せて送られてくるでしょう。

しかし、.htaccess 設定ファイルが存在すると、その前に処理が行われます。 クライアントのブラウザーから、「このページが見たい」要求が届いたとき、Apache サーバは .htaccess ファイルを探し、存在すると .htaccess の設定に基づいた何らかの動作を行います。もし .htaccess ファイルにアクセス制限が敷かれていたら、Apache からは、

403 Forbidden (あなたにはお見せできませんね。)

という渋い返事だけしか返ってこないでしょう。


ミケネコの htaccess リファレンス http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/