htaccessリファレンス

Apacheでは".htaccess"というファイルをディレクトリ内に置くことによってディレクトリ以下または特定のファイルに対するアクセスへの応答のオプションを設定することが可能。設定可能なディレクティブは多数あり、かなり柔軟な設定が可能であるが、ここではよく使用するディレクティブに的を絞って解説する。

関連項目:コンテンツのパスワード保護

関連項目:mod_rewriteリファレンス

ディレクトリオプションの設定

ディレクトリ以下におけるCGI実行やファイル一覧表示に関する動作を設定する。

# CGIの実行許可とコンテントネゴシエーションの有効化
Options ExecCGI MultiViews

サーバーのデフォルト設定もしくは上位ディレクトリのオプション設定を基本に、それに項目を追加または削除する場合は+/-を頭に付けて記述する。

Options +MultiViews
Options -Index

オプションとして設定可能な項目は下表の通りであるが、余計なオプションを有効化すると思わぬセキュリティホールを生む場合があるので、本当に必要なもの以外は無効化しておくことが肝心である。

   
Index ディレクトリへのアクセスに対してファイル一覧を表示する
FollowSymLinks シンボリックリンクをたどって表示する
ExecCGI CGIの実行を許可する
MultiViews コンテント・ネゴシエーション
All MultiViews以外のすべて
None すべて無効

ディレクトリインデックスの指定

ディレクトリへのアクセス(ファイル名を指定しない要求)に対して表示するデフォルトのドキュメントを指定する。複数記述しておくと、最初に合致したファイルが出力される。

DirectoryIndex index.html index.htm ・・

コンテント・ネゴシエーションを有効化している場合は拡張子の記述は不要。

Options +MultiViews
DirectoryIndex index

リダイレクト

特定のファイルやディレクトリに対するアクセスを他のURLに転送する。サーバー移転などでURLが変更された場合などに簡単にリダイレクトを行う方法として用いられる。より高度な条件をつけてリダイレクトを行いたい場合はRewriteモジュール(mod_rewrite)を使用する。

# 特定ファイルのリダイレクト
Redirect permanent index.html http://www.dawgsdk.org/hogehoge/new.html

# 特定ディレクトリ以下のリダイレクト
Redirect permanent /hogehoge/ http://www.dawgsdk.org/hogehoge/

# 正規表現を用いてマッチを行いリダイレクト
RedirectMatch (.*)\.gif$ http://www.dawgsdk.org$1.jpg

Redirectのあとに"permanent"を記述した場合、"301 Moved Permanently"(恒久的に移動)のレスポンスヘッダが返される。permanentを省略すると、"302 Moved Temporalily"(一時的に移動)が返される。

拡張子別の取り扱い

特定の拡張子を有するファイルについて特別な取り扱いをする場合の設定例。

# PHPスクリプトとして取り扱う拡張子の追加
AddType application/x-httpd-php .php

# CGIとして実行する拡張子の追加
AddHandler cgi-script .pl

# SSI(サーバーサイドインクルード)を使用する拡張子の追加
AddHandler server-parsed .html

# 特定の拡張子を持つファイルへのアクセス制限
<FilesMatch "\.(dat|log|cnt|inc|xml|pl|exe)$">
	deny from all
</FilesMatch>