動的ページを静的ページのように見せる方法
"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]
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]
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
※スパム防止のため、管理人がトラックバック内容確認後、公開されます。
コメントする