mod_rewriteでURLの転送をやってるんですが、先頭がクエスチョンマークのURLを転送できずに困っています。


普通に考えて、
xxxx.com/?yyyy=zzzz を
xxxx.com/index.php?yyyy=zzzz に転送するなら、

RewriteRule ^\?yyyy=zzzz index.php?yyyy=zzzz [L]

で良いと思うのですが、転送されません。(.httaccessはxxxx.com/に設置)

?を任意の位置文字として認識できないかと考え、

RewriteRule ^.yyyy=zzzz index.php?yyyy=zzzz [L]

ともしてみましたが、?には反応しません。(他の文字なら転送される)
解決策をご教授下さい。

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

ベストアンサー

id:pacochi No.1

回答回数247ベストアンサー獲得回数113

ポイント100pt

URL の「?」以降の文字列は、RewriteRule のパターンが適用される対象に含まれません。


単純な転送だけをするなら、以下のように記述するだけで「?」以降の文字も自動的に付加されると思います。

RewriteRule ^$ /index.php [L]

付加されなかったら、このように記述してみて下さい。

RewriteRule ^$ /index.php?%{QUERY_STRING} [L]

「?」以降の文字をマッチさせたい場合は、RewriteCond を使ってみて下さい。

RewriteCond %{QUERY_STRING} 【正規表現】
RewriteRule .* index.php [L]
id:hhashimo

ありがとうございます!お陰様で解決しました。

なるほど、全て納得です。

正確には、パラメータを変更した上での転送でしたので、3つ目のご回答のように、RewriteCond で条件設定した上で転送しました。

2011/09/21 14:22:35

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

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

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

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

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