動的ページを静的ページのように見せる方法

"hoge.cgi?a=x&b=y"のような動的ページを、"hoge_x-y.html"のように静的ページに見せる方法についてメモっておく。

静的ページに見せる方法

静的ページに見せるようにするには、.htaccess ファイルに以下のような設定を加えれば良い。

RewriteEngine on
RewriteOptions MaxRedirects=1
RewriteBase /dir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^hoge([0-9]+)-([0-9]+)\.html$ hoge.cgi?id=$1&page=$2 [L]

上記のように設定した、.htaccess ファイルを、

http://www.hoge.com/dir/

に置いたとすると、サーバー側では、以下の例のようにURLが置き換えられ結果をクライアントに返す。

アクセスURL実際に呼び出されるURL
http://www.hoge.com/dir/hoge1-1.html http://www.hoge.com/dir/hoge.cgi?id=1&page=1
http://www.hoge.com/dir/hoge2-5.html http://www.hoge.com/dir/hoge.cgi?id=2&page=5

RewriteBase で指定するパスは、URL置き換え後のファイル(ここでは、hoge.cgi)のある場所へのパスを意味している。htmlファイルとcgiファイルは同一ディレクトリにある必要はなく、cgiファイルを別のディレクトリに格納しても良い。例えば、hoge.cgiを、cgi-binというディレクトリに格納した場合には以下のように設定すればよい。

RewriteEngine on
RewriteOptions MaxRedirects=1
RewriteBase /cgi-bin/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^hoge([0-9]+)-([0-9]+)\.html$ hoge.cgi?id=$1&page=$2 [L]

この場合、先程の例では、以下のように実際に呼び出されるURLが置き換わる。

アクセスURL実際に呼び出されるURL
http://www.hoge.com/dir/hoge1-1.html http://www.hoge.com/cgi-bin/hoge.cgi?id=1&page=1
http://www.hoge.com/dir/hoge2-5.html http://www.hoge.com/cgi-bin/hoge.cgi?id=2&page=5

注意事項

RewriteBase の設定方法は、さくらインターネットの場合(他のプロバイダでは実験していないのでわかりませんが)、少し注意しなければならない。エイリアスを使ったサブドメインでは、上記の設定ではうまく動作がしなかった。

うまく動作させるためには、まず、エイリアスの設定で、最後に/(スラッシュ)を付けないこととと、RewriteBaseのディレクトリ設定でも、最後に/(スラッシュ)を付けないようにすればうまく動いた。

参考サイト

トラックバック(0)

このブログ記事に対するトラックバックURL: http://itsmemo.com/mt/mt-tb.cgi/106

※スパム防止のため、管理人がトラックバック内容確認後、公開されます。

コメントする