• ベストアンサー

.htaccessのRewriteRuleの記述

.htaccessのRewriteRuleの記述方法について質問です。 以下のようなURL移転があったので、RewriteRuleを記述したいのですが、どのように記述すればよろしいでしょうか? 【旧URL】 http://example.com/hoge/hoge.php?id=数字 【新URL】 http://example.com/foo.php?var=1&id=数字 ※数字は対応しています(同じページは同じ数字が入ります)。 なお、私なりにググってみて、以下のように記述したのですが、動きませんでした。 Options +FollowSymLinks RewriteEngine on RewriteRule /hoge/hoge\.php\?(.+) http://example.com/foo.php?var=1&$1 [R=301,L] また、上記のような場合は、そもそもRewriteRuleは適切ではないということであれば、より良い手段をご教示いただきたくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.3

すみません、クエリ文字列の部分の問題でしたね。 ならば RewriteRule hoge/hoge\.php http://example.com/foo.php?var=1 [QSA,R=301,L] で、どうでしょうか。

mic_goto
質問者

お礼

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

その他の回答 (2)

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

リダイレクトさせたくないのであれば RewriteRule hoge/hoge\.php?(.+) /foo.php?var=1&$1 [L] オプションに R=301 を指定するとリダイレクトします。(HTTPレスポンスコード 301 を返しなさいという意味なのでブラウザはリダイレクト処理を行います) また、書き換え後のページにドメイン名が含まれていたり、同一サーバー内に無い場合はリダイレクトされてしまいます。

mic_goto
質問者

お礼

ご回答ありがとうございます。 私の書き方が悪く誤解を招いてしまい申し訳ございません。 リダイレクトさせたくないのではなく、 望まないページにリダイレクトされてしまったことが問題点です。 質問欄記載の旧URLから新URLへリダイレクトしたかったところ、 No.1補足欄記載のページにリダイレクトされてしまったので、 問題が解決できなかったということでございます。 度々舌足らずで大変失礼いたしました。

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

RewriteRule hoge/hoge\.php?(.+) http://example.com/foo.php?var=1&$1 [R=301,L]

mic_goto
質問者

お礼

ありがとうございます。 ご記載頂いた通り記述したのですが、動きませんでした。

mic_goto
質問者

補足

スレ主です。 お礼欄の記載が舌足らずだったので、補足いたします。 正しくは、動かなかったのではなく、以下のURLにリダイレクトされました。 http://example.com/foo.php?var=1&p

関連するQ&A