- 締切済み
RewriteRuleによるパターンマッチング
いつもお世話になっております。 RewriteRuleによるパターンマッチングで特定のファイルを外部の画像配信サーバより配信させてたいと考えておりますが上手くいっておらず行き詰っております。 前提・補足情報・現在発生している問題など記載しますので、どなたかお分かりになるようでしたらご支援いただけますと大変助かります。 ◆サイトの構造 htdocs |_ hoge |_ lib ◆前提 /htdocs/lib/movies/hoge/配下にmp4・swf・swfを配置しているが、 そのサイズが大きいため外部の画像配信サーバにキャッシュさせている。 そのため、mp4・swf・swfなどのファイルに対するリクエストがあった場合、 mod_rewriteによって外部の画像配信サーバにリダイレクトさせ外部サーバより クライアントにダウンロードさせるようにする。 ◆補足事項 mp4・swf・swfなどのファイルは、クライアントが/htdocs/hoge/index.phpをHTTPでGETすると、index.phpの内部で次の通り呼び出されクライアントに渡される構造となっている。 <source src="..lib/movies/hoge/hoge123.mp4"> ◆現在の問題点 .htaccessに次のようにRewriteRuleを定義しているが、 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ RewriteRule ^(.*)\.(flv|mp4|3gp|jpg|gif|png)$ http://test.hoge.hoge.net/$1.$2 [NC,R,L] ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ rewrite_logをみると、 172.16.10.78 - - [12/Apr/2012:10:44:09 +0900] [172.24.133.81/sid#94d0478][rid#98e0880/initial] (3) [perdir /home/hoge/www.hoge.jp/htdocs/] applying pattern '^(.*)\.(flv|mp4|3gp|jpg|gif|png)$' to uri 'present/index.php' 172.16.10.78 - - [12/Apr/2012:10:44:09 +0900] [172.24.133.81/sid#94d0478][rid#98e0880/initial] (1) [perdir /home/hoge/www.hoge.jp/htdocs/] pass through /home/hoge/www.hoge.jp/htdocs/present/index.php index.phpに対してパターンマッチングしているため、flv|mp4|3gp|jpg|gif|pngらのファイルを外部サイトからGETするよう想定通りのリダイレクトができてきない。 ◆疑問 mod_rewriteの動きとして、上述のようにクライアントが直接HTTP GETせず、 phpを経由してflv・mp4を取得する場合、 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ RewriteRule ^(.*)\.(flv|mp4|3gp|jpg|gif|png)$ http://test.hoge.hoge.net/$1.$2 [NC,R,L] ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ このような記述では、mod_rewriteのRewriteRuleによるパターンマッチングは有効とはらないのでしょうか? また、仮に次のように定義した場合、 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ RewriteCond %{REQUEST_FILENAME} "\.(flv|mp4|3gp|jpg|gif|png)$" RewriteRule ^(.*)\.(flv|mp4|3gp|jpg|gif|png)$ http://test.hoge.hoge.net/$1.$2 [NC,R,L] ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 想定通りのパターンマッチングとなり、 test側へリダイレクトされるようになったりしますでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Lchan0211b
- ベストアンサー率61% (573/930)
> mp4・swf・swfなどのファイルは、クライアントが/htdocs/hoge/index.phpをHTTPでGETすると、 > index.phpの内部で次の通り呼び出されクライアントに渡される構造となっている。 > <source src="..lib/movies/hoge/hoge123.mp4"> このsrc=は正確に記載していますか? 正しくはsrc="../lib/movies/hoge/hoge123.mp4" だと思います。 また、sourceタグはHTML5でのみ有効なタグですが、 HTML5対応ブラウザで確認していますか? 上記のsourceタグのsrc属性を正しく記述して、 HTML5対応ブラウザで確認すれば、、sourceタグを ブラウザに返した後、再度ブラウザから 「/lib/movies/hoge/hoge123.mp4」にアクセスがあり、 それがRewriteRuleのパターンにマッチしてリダイレクト されることになると思います。