動的ページを静的ページとして検索エンジンに読み込ませたいと思い、.htaccessをいぢっています。

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=の項目だけで使われていることがあるようです。

これが不具合の元にならないと良いのですが。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2008/10/07 17:25:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント35pt

こんな感じでしょうか。

RewriteEngine on
RewriteRule /cgi/m_goods_detail.cgi?CategoryID=([0-9]+)&GoodsID=([0-9]+)&BasketSessionID=$ /cgi/$1/$2.html
id:himawari-sun

ご回答感謝します。書いて頂いた例で試してみたいと思います。参考になります。

2008/09/30 19:27:58
id:shotets No.2

回答回数42ベストアンサー獲得回数2

ポイント35pt

.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 の値をスプリットすればいいと思います。

id:himawari-sun

パラメータを引き継ぐ形ですか。自分なりに検索して調べた事例と頭の中でつながる感じがします。示して頂いた例に沿っても試してみたいと考えています。ありがとうございます。

2008/09/30 19:29:34

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません