- ベストアンサー
.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は適切ではないということであれば、より良い手段をご教示いただきたくお願い申し上げます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
すみません、クエリ文字列の部分の問題でしたね。 ならば RewriteRule hoge/hoge\.php http://example.com/foo.php?var=1 [QSA,R=301,L] で、どうでしょうか。
その他の回答 (2)
- t_ohta
- ベストアンサー率38% (5238/13705)
リダイレクトさせたくないのであれば RewriteRule hoge/hoge\.php?(.+) /foo.php?var=1&$1 [L] オプションに R=301 を指定するとリダイレクトします。(HTTPレスポンスコード 301 を返しなさいという意味なのでブラウザはリダイレクト処理を行います) また、書き換え後のページにドメイン名が含まれていたり、同一サーバー内に無い場合はリダイレクトされてしまいます。
お礼
ご回答ありがとうございます。 私の書き方が悪く誤解を招いてしまい申し訳ございません。 リダイレクトさせたくないのではなく、 望まないページにリダイレクトされてしまったことが問題点です。 質問欄記載の旧URLから新URLへリダイレクトしたかったところ、 No.1補足欄記載のページにリダイレクトされてしまったので、 問題が解決できなかったということでございます。 度々舌足らずで大変失礼いたしました。
- t_ohta
- ベストアンサー率38% (5238/13705)
RewriteRule hoge/hoge\.php?(.+) http://example.com/foo.php?var=1&$1 [R=301,L]
お礼
ありがとうございます。 ご記載頂いた通り記述したのですが、動きませんでした。
補足
スレ主です。 お礼欄の記載が舌足らずだったので、補足いたします。 正しくは、動かなかったのではなく、以下のURLにリダイレクトされました。 http://example.com/foo.php?var=1&p
お礼
ありがとうございます。 お陰様で解決しました。