• 締切済み

mod_rewriteの設定方法について教えてください。

mod_rewriteで下記のようにURLの書き換えの設定を行っているのですが、 実際のURL [A] http://hogehoge.com/index.cgi?a=123&b=abc ↓ アクセスするURL [B] http://hogehoge.com/123/abc/ となるように、下記のように設定を行ったのですが、 --------------------------------------------------------- RewriteEngine on RewriteCond %{HTTP_HOST} ^([^:]+) RewriteRule ^/([^\/]+)/([^\/]*) http://%1/index.cgi?a=$1&b=$2 [L,R] --------------------------------------------------------- 上記の設定を行ったうえで[B]にアクセスすると正しく[A]にアクセスは出来るのですが、ブラウザのアドレス欄は[A]のURLに変換されて表示されます。 これを[B]の表示のままにすることって可能なのでしょうか? もし可能なようでしたらその設定方法を教えていただけないでしょうか。 よろしくお願いいたします。 ApacheバージョンはApache/2.0.52です。

みんなの回答

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

すいません 「​」は投稿時になにか変な文字が混ざって文字化けしたのだと思います。 RewriteRule ^/([^\/]+)/([^\/]*) /index.cgi?a=$1&b=$2 [L] です。

Mr_Bajil
質問者

お礼

何度もありがとうございます。 「​」をとっても結果は同じでした。 うーん。なかなか簡単じゃないんですね。。。

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

アクセスするURLのホスト名と実際のURLのホスト名が同じなら、以下のようにしてみてはいかがでしょうか。 RewriteEngine on RewriteRule ^/([^\/]+)/([^\/]*) /index.cgi?a=$1&b=$2​ [L] 記憶が定かではないので間違っているかもしれませんが、書き換え後のURLがhttp://で始まっているとリダイレクトの扱いにされてしまった気がします。

Mr_Bajil
質問者

お礼

ご連絡ありがとうございます。 ご指定の通り試しましたところ、URLは変わりませんでしたが、リダイレクトされず「ページが見つかりません」となってしまいました。 ちなみに「​」って何か意味のあるものなのでしょうか? また、 RewriteEngine on RewriteRule ^/([^\/]+)/([^\/]*) /index.cgi?a=$1&b=$2​ [L,R] として試してみたところ、一番最初と同様、リダイレクトされ、URLも変換されてしまいました。

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

RewriteRule のフラグを [L] だけにしたらどうでしょう。

Mr_Bajil
質問者

お礼

早速のご回答ありがとうございます。 [L]だけで試しましたが結果は変わりませんでした。

関連するQ&A