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>