htaccess


.htaccessは、Webサーバ、正確にはHTTPdというプログラムを制御するために使われます。
実際に使われる場面としては、IDとパスワードを入れなければアクセスできない「基本認証」、 拡張子からのファイルの種類(MIME Type)の決定、 ファイルが見付からなかったときに表示するエラーページの場所の指定等があります。 ですが、おそらく一番上以外はあまり知られていないと思います。

このページには、.htaccessのいろいろな記述方法を覚え書きしておきます。
※ページ名の最初にピリオドを付加できないため、ページ名は「htaccess」しておきます。

.htaccessの書き方

書き方は簡単です。テキストエディタなどでがしがし書くだけです。 例えば、以下のように設定します。

ErrorDocument 404 /404.html
ErrorDocument 401 /401.html

このファイルを、設定をしたいディレクトリに置くだけです。 ファイル名は「.htaccess」で固定で、勝手に変えてはいけません。無視されるだけです。

少し長いサンプルから、いくつかの書き方を紹介します。

<Directory web/>
Options ExecCGI Includes Indexes
</Directory>
<Limit POST GET>
require valid-user
</Limit>
<Files .htaccess>
order deny,allow
deny from all
</Files>

さて、部分部分に分けて説明します。 <Directory>から</Directory>で囲まれた部分に書いた設定は、この例では「web」というディレクトリの下に置いて適用されます。 同様に、<Files>では、ファイル単位での設定を行うことが出来ます。この例では、.htaccess自身に適用させています。 Optionsでは、様々なことを設定することが出来ますが、おそらく以下のものがあれば十分でしょう。

  • All
  • 基本的にほとんどの機能が利用可能です。
  • ExecCGI
  • CGIの実行を許可します。
  • Includes
  • SSIを許可します。
  • Indexes
  • もしディレクトリにマップしているURLがリクエストされ、そのディレクトリにDirectoryIndex?(例:index.html)がない場合には、サーバがそのディレクトリ以下のファイルを表示することを許可します。

<Limit>では、アクセス方法によって制御します。 この例では、POSTとGET……つまり、CGIのアクセス方法……によってアクセスされたときに挟まれた内容を適用します。 requireは、基本認証の記述の一部です。基本認証の項をご覧ください。 orderは、基本認証を掛けたとき等に、アクセス許可と拒否のどちらをデフォルトにするかを指定します。 order deny,allowでは、allowとdenyのどちらをデフォルトにするかを指定します。先に書いた方がデフォルトとなります。 denyとallowは、アクセスを拒否/許可する相手を指定します。上のように「all」と書けば全ての相手に適用されます。 また、allow from .w3c.orgや、allow from 192.168のように指定すれば、 相手のドメインやIPアドレスによって指定することが出来ます。

基本認証

パスワードを掛けるのに一番標準的な方法である「基本認証」の設置の仕方は、 有名・無名問わず様々なサイトで紹介されています。 rescue さんの、基本認証の解説ページがとても分かりやすいので、 あえてここでは書きません。そちらを参照してください。

MIME Typeの設定

ブラウザがファイルをダウンロードしたとき、そのファイルの種類を決定するのに使われるのが、 .htaccessで設定できるMIME Typeです。 実際には拡張子も使われますが、MIME Typeが分かっている場合はこちらを優先します。 つまり、設定さえ変えれば、拡張子がないファイルをJpegイメージと認識させたりすることもできます。 但し、Windowsでは拡張子以外にファイルの種別を決定する手段がないため、 そういったファイルを自分のHDD内に置いてしまうと画像データを分からなくなってしまい、 結果として表示できなくなってしまったりするので、おすすめしません。 実際にMIME Typeが使われるのは、CGIで画像を表示したりする場合です。 この場合には、拡張子は.cgiの場合でも、CGIの出力で「このファイルは画像だよ〜」と 最初にブラウザに知らせることで、画像と判別したりします。 さて、実際にMIME Typeを設定するには、以下のようにします。

AddType text/html .html
AddType text/html .htm
AddType image/jpeg .jpg
AddType video/mpeg .mpeg

この例では、拡張子が「html」「htm」のものに「text/html」、「jpg」に「image/jpeg」、 「mpeg」には「video/mpeg」というMIME Typeを割り当てています。 ブラウザ側では、このMIME Typeを読みとることで、普通にHTMLとして表示したり、 JPEG形式の画像データとして表示したり、MPEG形式の動画データとしてプラグインを起動したりするわけです。 つまり、一般的には上の例のように

 AddType [割り当てるMIME Type] [拡張子…但し.(ピリオド)から始める]

…という形で設定します。

Indexの指定

普通、URIの最後のファイル名を省略すると、index.htmlや、index.htmと言ったファイルが表示されます。 このファイルのことを、そのままですが「インデックス」と呼びます。まあ、当たり前ではあるのですが。

さて、このファイルは本来、indexの意味が示すとおり、そのディレクトリにあるファイルの牽引を表示するためのものなのですが、 現在では、「index.html」=「ホームページのトップページ」のようなイメージが定着しています。

さて、ディレクトリを指定した=ファイル名を省略した場合に表示されるファイルも、.htaccessで指定することが出来ます。 やり方は簡単です。

DirectoryIndex index.html index.htm index.cgi index.txt

この例では、ディレクトリ名が指定された場合に、以下の順番でファイルを探し、それを表示します。

「index.html」→「index.htm」→「index.cgi」→「index.txt」

実際には、トップページをいきなりCGIに飛ばしたい場合などに使います。

エラーページの設定

アドレスをまちがえたときに出る、「404 Not Found」の画面。殺風景だと思いませんか? .htaccessで設定すれば、このエラーメッセージもかえることができます。

ErrorDocument 404 /404.html

さて、エラーの種類は「404 Not Found」だけではなく、他にも以下のようなものがあります。

  • 403 Forbidden
  • アクセスが禁止されている場合に出ます。
  • 500 Internal Server Error
  • CGIのエラー等が起きた場合に出ます。
  • 401 Unauthorized
  • 認証に失敗した場合に出ます。

他にも、様々なものがありますが、これ以外はRFC2068(HTTP/1.1仕様書)を参照してください。

SSIの制御

最近では、デフォルトで「html」や「htm」でもSSIを認識する設定がされている場合も多いのですが、 「shtml」のみSSIを認識するようになっているプロバイダも多いと思います。 もし、.htaccessを使えるなら、好きな拡張子のファイルでSSIを使うことが出来ます。

AddHandler server-parsed .shtml
AddHandler server-parsed .html
AddHandler server-parsed .htm

この設定を.htaccessで行えば、拡張子が「html」や「htm」のファイルでもSSIを使うことが出来ます。 但し、この設定をするとサーバにかかる負担がやや増えます。 ちなみに、以下のように説明してある場合もあります。

AddType text/x-server-parsed-html .html
AddType text/x-server-parsed-html .htm

これは、後方互換のために用意されているもので、Apacheの場合、正しくは上記のAddHandler?を用います。

ナビゲーション

プロフィール

Photo Hondarer  My status

自分に正直に、目指す物を目指すかたちで、全ての人が幸せになれるシステムを削り出す職人でありたい。

Powered by
HndWiki 066714