>> i's SQUARE >> Webサービス構築ガイド >> .htaccessファイルの設定

.htaccessファイルによるオーバーライド

Webサーバーの設定ディレクティブはApacheの場合「httpd.conf」に記述しますが、 「.htaccess」ファイルを使えば、サーバを再起動しなくても「httpd.conf」の設定をディレクトリ単位でオーバーライド可能です!

基本的に「.htaccess」にオーバーライドしたい設定を記述して、その設定を適用したいディレクトリに保存しておくだけでOKです!
このファイルを設置したディレクトリ以下の範囲で適用されますので、 サイトのトップディレクトリに置いた場合は、そのサイト全体に適用されます。

但し、「httpd.conf」の設定で「AllowOverride None」等となっている場合はオーバーライド不可で「.htaccess」は無視されます。



■.htaccessファイル自体の閲覧を防ぐ

.htaccessファイル自体がWebブラウザから閲覧されてしまうと セキュリティが低下してしまう可能性がありますので、 .htaccess ファイルに次の1行を加えましょう。

AddHandler cgi-script htaccess


■リダイレクト機能を利用する

ホームページを移転した時に良く使うリダイレクトは以下のように記述すればOKです。

Redirect permanent /bbs/ http://headline.2ch.net/bbynews/
この場合、http://自分のドメイン/bbs 以下のアクセスは全て http://headline.2ch.net/bbynews/ にリダイレクトされます。


■CGIが動くように設定する

以下は拡張子が .cgi と .pl のファイルをCGIとして認識される記述例です。

Options +ExecCGI
AddType application/x-httpd-cgi .cgi .pl


■SSIを使えるように設定する

以下は拡張子が .shtml、.html、.shtm、.htm のファイルでSSIを有効にする記述例です。

Options +Includes
AddType text/x-server-parsed-html .shtml .html .shtm .htm
また、CGIとSSIを同時に設定する場合は以下のように記述します。
Options +ExecCGI +Includes
AddType application/x-httpd-cgi .cgi .pl
AddType text/x-server-parsed-html .shtml .html .shtm .htm


■index.cgiやindex.phpをトップページにする方法

URLをスラッシュ(/)で終わらせてアクセスすると、通常は「index.html」ファイルが表示されます。 このデフォルトを違うファイルに変更する事が可能です。

DirectoryIndex index.cgi index.php
上記の設定例は、まず最初に「index.cgi」を探しに行って表示します。 index.cgiファイルがなければindex.phpを探して表示します。


■ファイル一覧を表示させない

URLをスラッシュ(/)で終わらせてアクセスすると、デフォルトでは「index.html」ファイルが表示されますが、 サーバーの設定によってはこのファイルが存在しない場合はディレクトリ内のファイル一覧が表示されてしまいます。
これを防ぐには以下のように記述します。

Options -Indexes


■特定ユーザーのアクセスを拒否する方法

以下は一部のユーザーのアクセスを禁止する記述例です。

order allow,deny
allow from all
deny from 133.144.101.20
deny from hogehoge.jp
deny from .net
deny from 61.124.
この例では 「IPが133.144.101.20」、 「ホスト名がhogehoge.jp」、 「ホスト名の最後が.net」、 「61.124.ではじまるIP」のアクセスを拒否します。
基本的に、拒否したいIPやホスト名を、deny from の後にずらずらと記述します。


■特定ユーザーからのアクセスのみ許可する方法

以下は特定ユーザーからのアクセスのみを許可する記述例です。

order deny,allow
deny from all
allow from 133.144.101.20
allow from hogehoge.jp
allow from .net
allow from 61.124.
基本的に、アクセス許可したいIPやホスト名を、allow from の後にずらずらと記述します。


■特定のファイルへのブラウザからのサクセスを拒否する方法

<Files ~ "\.(dat|log|csv)$">
deny from all
</Files>
この例では、拡張子が .dat .log .csv のファイルに対してブラウザからのアクセスを禁止しています。
但し、このようなファイルは設定で制限するよりもWebブラウザからアクセスできない場所に作成するようにした方が尚ベターです。


■ユーザーエージェントでアクセスを拒否する方法

SetEnvIf User-Agent "robot" deny_ua
order allow,deny
allow from all
deny from env=deny_ua
この例では、ユーザーエージェントが「robot」のアクセスを禁止しています。


■リンク元(Referer)によるアクセス制限の方法

SetEnvIf Referer "^http://www\.2ch\.net" ref_ng
SetEnvIf Referer "^http://www\.1ch\.net" ref_ng
order allow,deny
allow from all
deny from env=ref_ng
この例では、リンク元が「2ちゃんねる」や「1ちゃんねる」からのアクセスを禁止しています。


■エラーメッセージを変更する

以下は、認証に失敗した場合のエラー(401)、 アクセス権限が無い場合のエラー(403)、 ファイルが見つからない場合のエラー(404)、 サーバーエラー(500)の内容を自分で作成したファイルの内容に変更する記述例です。

ErrorDocument 401 /error/401.html
ErrorDocument 403 /error/403.html
ErrorDocument 404 /error/404.html
ErrorDocument 500 /error/500.html
この例だと、例えば http://adgjm.net/hogehoge/test.htm にアクセスしてファイルが存在しないと 通常は「404 Not Found」や「ページが見つかりません」といったエラーメッセージが表示されますが、 このエラーメッセージの代わりに http://adgjm.net/error/404.html のページを表示させることが出来ます。



デバグは納期前にするんじゃない!運用後にするんだ!
by プログラマーの格言