.htaccessとは

Webサーバの動作をディレクトリ単位で制御するためのファイルです。
.htaccessを利用すると次のようなことができます。順に見ていきましょう。

パスワードによるアクセス制限(Basic認証)

リダイレクト

あるフォルダ(たとえば「olddir」)以下が呼び出されたときに別のページにリダイレクトさせたい場合には 次のように指定します。

Redirect permanent /olddir/ http://www.welearn.jp/newdir/

index.phpをトップページにする

URLの終わりをスラッシュ「/」で指定すると、通常はそのディレクトリにあるindex.htmlが呼び出されます。 DirectoryIndexを指定しておくと、このデフォルトのファイル(index.html)を違うファイル(たとえばindex.php)に変更することができます。

DirectoryIndex index.php index.cgi index.html

このように指定することにより、まずindex.phpが呼び出されます。index.phpがなければindex.cgiが呼び出されます。index.cgiがなければindex.htmlが呼び出されます。

CGIを使えるようにする

そのディレクトリで、CGIを使えるようにするためには拡張子とともに次のように指定します。 拡張子「.cgi」のファイルをCGIプログラムとして実行するようにWebサーバーに伝えているわけです。

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

拡張子「.pl」も使用できるようにするためには次のように指定します。

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

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

ディレクトリに index.html が存在しなと、ディレクトリ内のファイルが一覧で表示されてしまう場合があります。 それを避けるためには次のように指定します。

Options -Indexes 

この指定は +ExecCGIなどと同時に指定することもできます。

Options +ExecCGI -Indexes 

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

エラーメッセージを変更する場合には次のように指定します。

ErrorDocument 401 /errors/err401.html
ErrorDocument 403 /errors/err403.html
ErrorDocument 404 /errors/err404.html
ErrorDocument 500 /errors/err500.html

ステータスコード

401Unauthorized(ユーザー認証失敗)
403Forbidden(アクセス拒否、アクセス権限がない)
404Not Found(存在不明)
500Internal Server Error(サーバ内部エラー)

PHPの設定を行う

php_valueディレクティブあるいはphp_flagディレクティブを使います。

<IfModule mod_php5.c>
    php_value  パラメータ名  パラメータ値
    php_flag   パラメータ名  on | off
</IfModule>

IfModule mod_rewrite.c ってなんでしょう

URL書き換えモジュールmod_rewriteが使えたら、という意味です。たとえば次のようなに設定します。

RewriteEngine On
Options +FollowSymLinks
Options +SymLinksIfOwnerMatch
RewriteBase /hoge/
RewriteRule ^logs/(.[^\/]+)/$ logs/?date=$1 [L]

RewriteEngine On

書き換えを可能にします。

FollowSymLinks

シンボリックリンクを有効にします。

SymLinksIfOwnerMatch

ファイル所有者に限り、シンボリックリンクを許可します。

RewriteBase /hoge/

書き換えのルートはルートディレクトリhogeにします。

RewriteRule ^logs/(.[^\/]+)/$ logs/?date=$1 [L]

条件がマッチしたら指定のページにジャンプ。 [L]は書き換えが完了したら他の書き換えルールは無視するという意味。