mod_rewriteを利用すれば可能だという事なのですが、検索して出てくる事例を見ても当方のWebサイトでの応用が上手くゆきません。
このようなURLになっています。
shop/cgi/m_goods_detail.cgi?CategoryID=35&GoodsID=82&BasketSessionID=
これを、shop/cgi/35/82.html
のように整形したいのですが、具体的な正規表現やmod_rewriteの使用法を教えて頂けないでしょうか?
通常はURL末尾の&BasketSessionID=に数値が入ることはありません。
しかし、時々、shop/cgi/m_basket.cgi?BasketSessionID=b53eaa5ab8451bd22d02f3d2ac133863
というように、BasketSessionID=の項目だけで使われていることがあるようです。
これが不具合の元にならないと良いのですが。
こんな感じでしょうか。
RewriteEngine on RewriteRule /cgi/m_goods_detail.cgi?CategoryID=([0-9]+)&GoodsID=([0-9]+)&BasketSessionID=$ /cgi/$1/$2.html
.htaccessやmod_rewriteの記述方法を探すよりも
優れたCMSをダウンロードしてソースを読んだほうが参考になるかもしれませんね。
<IfModule mod_rewrite.c>
RewriteEngine on
# ベースとなるディレクトリ
#RewriteBase /shop/cgi
# 後ろのURLをGETに変換 'm_goods_detail.cgi?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ m_goods_detail.cgi?q=$1 [L,QSA]
</IfModule>
最後の[L,QSA]のQSAはパラメーターを引き継ぐというオプション設定で、
例えば
shop/cgi/35/82?BasketSessionID=XXXX
と送信されたら
shop/cgi/m_goods_detail.cgi?q=35/82&BasketSessionID=XXXX
と&でつなげてくれます。
あとは m_goods_detail.cgi で q の値をスプリットすればいいと思います。
パラメータを引き継ぐ形ですか。自分なりに検索して調べた事例と頭の中でつながる感じがします。示して頂いた例に沿っても試してみたいと考えています。ありがとうございます。
ご回答感謝します。書いて頂いた例で試してみたいと思います。参考になります。