mod_rewriteの指定方法について質問です。


以下のように設定して、item.php?id=1ならitem1.htmlと表示するようにしています。
RewriteRule item([0-9\-]+)\.html item.php?id=$1

しかしパラメーターが、item.php?id=1&page=1
の場合はページが表示されません。

おそらく書き方が悪いと思うのですが、どの部分を修正すればよいのでしょうか?
出来れば、&page以降、パラメーターが増えた場合にも対応出来る書き方を教えていただければと思います。

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

回答2件)

id:KUROX No.1

回答回数3542ベストアンサー獲得回数140

ポイント35pt

RewriteRule item([0-9\-]+)\_([0-9\-]+)\.html item.php?id=$1page=$2

http://memorva.jp/memo/linux/mod_rewrite.php

id:k27w

すみません。質問が悪かったです。


item.php?id=1の場合はitem1.htmlで良いのですが、

item.php?id=1&page=1の場合

item1.html?&page=1


と、&を付けてパラメーターを表示したいのです。(なぜなら、id以外はパラメーターが付いて欲しいからです)

2008/02/18 03:48:42
id:wizemperor No.2

回答回数379ベストアンサー獲得回数52

ポイント35pt

質問が曖昧なので具体例がないと答えにくいですが、KUROXさんの回答を補足して回答。


item1.html -> item.php?id=1

item1_2.html -> item.php?id=1&page=2

item1_2_3.html -> item.php?id=1&page=2&param=3

としたいなら、

RewriteRule item([0-9\-]+)\.html item.php?id=$1page=$2
RewriteRule item([0-9\-]+)_([0-9\-]+)\.html item.php?id=$1&page=$2
RewriteRule item([0-9\-]+)_([0-9\-]+)_([0-9\-]+)\.html item.php?id=$1&page=$2&param=$3
…

item1.html -> item.php?id=1

item1.html?page=2 -> item.php?id=1&page=2

item1.html?page=2&param=3 -> item.php?id=1&page=2&param=3


な感じにしたいなら、


RewriteRule item([0-9\-]+)\.html item.php?id=$1 [QSA]

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

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

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

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

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