.htaccessとは
Webサーバの動作をディレクトリ単位で制御するためのファイルです。
.htaccessを利用すると次のようなことができます。順に見ていきましょう。
- パスワードによるアクセス制限(Basic認証)
- リダイレクト
- index.phpをトップページにする
パスワードによるアクセス制限(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
ステータスコード
401 | Unauthorized(ユーザー認証失敗) |
403 | Forbidden(アクセス拒否、アクセス権限がない) |
404 | Not Found(存在不明) |
500 | Internal 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]は書き換えが完了したら他の書き換えルールは無視するという意味。