うろぐ

インターネットサービス&デジタル家電&デジタルカメラ&パソコンのレビュー

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)にアクセスするための記述です。
具体的に説明をすると

  1. 「http://www.exampl.com」と最後にスラッシュを入れないでアクセスをする
  2. 「http://www.exampl.com/」と最後にスラッシュを入れてアクセスをする
  3. 「http://www.exampl.com/index.html」と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」を忘れやすいものです。

5月 12th, 2009

Posted In: サーバーの設定とトラブルの回避方法

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です