• ベストアンサー

mod _rewriteによる二重リダイレクト

mod_rewriteで下記のようなことをしたいと思っています。 1.http://~/ABCDEFG.jpgにアクセスがあったら、 2.http://~/AB/CD/EFG.jpgにリダイレクトする。 3.http://~/AB/CD/EFG.jpg がなかったらhttp://~/NO.jpgにリダイレクトする。 2.まではできるのですが、3.に進みません・・・。 このようなことを実現できないでしょうか。すごく困っております・・・。 お手数ですがご教示いただけないでしょうか。 ---- 以下2.までできたmod_rewrite <DirectoryMatch ~> <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ([a-z0-9A-Z][a-z0-9A-Z])([a-z0-9A-Z][a-z0-9A-Z])([a-z0-9A-Z]+\.jpg) $1/$2/$3 [L] </IfModule> </DirectoryMatch>

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

  • ベストアンサー
  • yuuki0229
  • ベストアンサー率70% (33/47)
回答No.2

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([a-z0-9A-Z][a-z0-9A-Z])([a-z0-9A-Z][a-z0-9A-Z])([a-z0-9A-Z]+\.jpg)$ $1/$2/$3 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . no.jpg [L] 上記のような形で実現できると思います。 ちなみに、 ErrorDocument 404 /no.jpg でも似たようなことは可能です。

myaa_myu
質問者

お礼

お返事遅くなりましたが、ご回答ありがとうございました。 ご回答いただいた記述でできました。 まだmod_rewriteがよくわかっておらず、 RewriteCond RewriteRule の次にまたRewriteCond RewriteRule を 続けて書いて評価することができるのを知りませんでした。 大変勉強になりました。404のエラーについても、ご教示いただき大変助かります。 ありがとうございました。

その他の回答 (1)

noname#243182
noname#243182
回答No.1

リクエストされたJPEGファイルが条件に合致しない場合、「NO.jpg」へ書き換え。条件に合致する場合、該当ディレクトリの該当ファイルへ書き換え。該当ディレクトリでもう一度ファイルの存在確認をして、書き換えという流れで如何でしょうか。 先に予想される全てのリクエストパターンに対応したディレクトリを生成しておくことが必要となるので、現実的ではないかもしれません。 リクエストパターンをもう少し簡単に出来るのであれば、検討の余地はあるのかなと思います。 全てのJPEG画像に対するリクエストをPHPスクリプトの呼び出しにリライトして、その中で処理することも出来るでしょうが、これもあまり現実的ではないのかもしれません。

myaa_myu
質問者

お礼

お返事遅くなりましたがありがとうございました。 おかげさまでmod_rewriteで行うことができました。 ありがとうございました・

関連するQ&A