• ベストアンサー

RewriteRuleで動的URLを静的URLに見せたい

ご存知の方がいらっしゃいましたら、 ご指導いただきたいと思っています。 http://example.com/hoge.do?itemNo=123456(以下"A") という動的URLのリンクを http://example.com/hoge/123456(以下"B") という静的URLに見えるようなリンクに変えようと思っています。 そして、 "B"にアクセスした場合"A"の内容をブラウザに表示しつつ、 ブラウザのURL欄を"B"のままにしたいと思っています。 そこで、httpd.confに以下の設定をして、"B"にアクセスしたところ・・・ 1行目 RewriteEngine on 2行目 RewriteRule ^/hoge/(.*)$ /hoge.do?itemNo=$1 「Web ページがみつかりません(HTTP 404 )」 が帰ってきてしまいます。 そこで試しに httpd.confの設定を以下のように変えて、"B"にアクセスしたところ・・・ 2行目 RewriteRule ^/hoge/(.*)$ /hoge.do?itemNo=$1 ↓ 2行目 RewriteRule ^/hoge/(.*)$ /hoge.do?itemNo=$1 [R] "A"の内容をブラウザに表示され、ブラウザのURL欄は"A"のままとなってしまいます。 どのようにしたら、本来の想定どおりの動きができるのか? 何か他の設定がおかしいのか? どなたか心当たりがあればヒントをください。 どうかよろしくお願いします。

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

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

> 画像の読み込みが正常に行われていなく 画像については相対パス指定になっているということでしょうか。 B→Aで画像のパスも変わりますが、パススルーの場合クライアントから見たURLは変わりませんので、 画像についても RewriteRule ^/hoge/(.*\.jpg)$ /$1 といった感じで 同様のパス変化に対応したリダイレクトをすればいいでしょう。 (現状では、画像についてもhoge.do?…な書き換えがされてると思います) あるいは、記事番号が数字だけだとか、決まったルールがあるなら、 RewriteRule ^/hoge/([0-9]*)$ /hoge.do?itemNo=$1 [PT] RewriteRule ^/hoge/(.*)$ /$1 といった感じで、記事番号がついたURLについてだけ動的URLとして処理し、 それ以外は全て静的URLとしてパスの書き換えをした方が良いかと思います。

doraneko19
質問者

お礼

ご回答ありがとうございます。 ご指摘どおり、 問題点の認識がずれていまして、html内の相対パスが問題だということに気が付きました。 画像URLのリライトについては、目から鱗です。 早速試して見たいと思います。 ご丁寧にありがとうございました!

その他の回答 (1)

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.1

パススルーフラグでよいと思います。 RewriteRule ^/hoge/(.*)$ /hoge.do?itemNo=$1 [PT]

doraneko19
質問者

お礼

ご回答ありがとうございます。 返事が遅くなって申し訳ありません。 ご指摘のとおり設定したところ、想定どおりの動きに近づきました。 しかし、画像の読み込みが正常に行われていなく、 htmlのimgタグのsrcに修正を加える。といったような対策が必要に思えます。 修正範囲が結構大きくなりそうですね。。。 無茶な質問かもしれませんが、サーバの設定(ドキュメントルートとか?)だけで対策はできないものでしょうか? ご指導ください

関連するQ&A

専門家に質問してみよう