CGIやPHPなど動的なページを静的なページに置き換えるのがmod_rewriteです。
mod_rewriteを作動させるために「.htaccess」を書くのですが、多少、書き方にこつがあるので、わたし自身のために備忘録として書き留めておきます。
.htaccessファイルの書き方
「.htaccess」の書き方には幾通りかありますが、下記の書き方ならば、ほぼ全てのサーバ上で動作します。
1行目のRewriteEngine onはmod_rewriteを使用するという宣言ですので全てで共通です。
2行目以降にURLを挿入しています。一部のサーバではURLを挿入しないと動作しない例が見受けられます。
RewriteEngine on
RewriteRule ^$ http://www.exampl.com/cgi-bin/dir/play.cgi [L]
RewriteRule ^/$ http://www.exampl.com/cgi-bin/dir/play.cgi [L]
RewriteRule ^(index+)\.html$ http://www.exampl.com/cgi-bin/dir/play.cgi [L]
ここまでの3行はトップページ(index.html)にアクセスするための記述です。
具体的に説明をすると
の3パターンに対応しています。
新規に開設をするサイトなら、index.htmlは不要かもしれませんが、既存のサイトをmor_rewriteで動作するように変更する場合は、必須となります。忘れるとアクセス数が激減しますので、注意してください。
RewriteRule ^([0-9A-Za-z_]+)$ http://www.exampl.com/cgi-bin/dir/play.cgi?thu=$1 [L]
RewriteRule ^([0-9A-Za-z_]+)/$ http://www.exampl.com/cgi-bin/dir/play.cgi?thu=$1 [L]
RewriteRule ^([0-9A-Za-z_]+)/(index+)\.html$ http://www.exampl.com/cgi-bin/dir/play.cgi?thu=$1 [L]
一階層下のディレクトリにアクセスするための記述です。
トップページと同様に3パターンに対応しています。
以下、階層が深くなるごとに、同様の記述を足して行きます。
以外に「/」と「index.html」を忘れやすいものです。
mizunuma 5月 12th, 2009
Posted In: サーバーの設定とトラブルの回避方法