動的アドレスから静的アドレスにするモジュールを導入し


example.com/index.php?main_page=product_info&products_id=24&cPath=1_2
  ↓↓
example.com/product/p24.html?cPath=1_2

と出来たのですが、さらにcPathを別の文字(例としてaaa)に変えようと
チャレンジしてみるものの、.htaccessの書き方がわかりません。

現状の.htaccessは

RewriteRule ^(.*)product/p(.*).html$ index\.php?main_page=product_info&products_id=$2&%{QUERY_STRING} [L]


となっています。

   
example.com/product/p24.html?aaa=1_2
  ↓↓
example.com/index.php?main_page=product_info&products_id=24&cPath=1_2


もしくは

http://example.com/product/p24.html?aaa=1_2
  ↓↓
http://example.com/product/p24.html?cPath=1_2


となるよう、上記.htaccessのコードに加える(もしくは変更する)ソースをお願いします。
クエリが付かない場合や、別のクエリが入ることがありますが、基本的にcPath=××は
アドレスの最後位置になります。



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

ベストアンサー

id:tezcello No.1

回答回数460ベストアンサー獲得回数69

ポイント60pt

Mod_Rewrite ではクエリの中まで書き換えられなかったような...

example.com/product/p24.html?aaa=1_2

へのアクセスではなく、

example.com/product/p24.html/1_2

へのアクセスを

example.com/index.php?main_page=product_info&products_id=24&cPath=1_2

へ置き換えるってのはダメですか?

RewriteRule ^(.*)product/p(.*).html/?(.*)  index.php?main_page=product_info&products_id=$2&cPath=$3 [QSA] [L]

ご希望の動作はクエリの名前を変えているだけですから、index.php 内で

$_GET['aaa'] = $_GET['cPath'];

とするだけでもいいような気もしますが?


別のクエリが付く事を気にされているのなら、[QSA] フラグで解決しませんか?

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRul...

id:pocon

ご提示いただいたRewriteRuleでうまくいけそうです。

ありがとうございます。

2008/03/25 17:44:26

コメントはまだありません

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

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

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

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