- - PR -
apacheでURLの参照ファイルの有無を条件に処理を分岐する
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-10-19 16:39
初投稿です。至らないところがありましたらご容赦ください。
現在、WEBアプリケーションを作製しているのですが、画像の管理をやりやすくするため、 imgタグで呼ばれる画像を、サーバー上にそのファイルがあるかどうかで条件分岐し、 あればその画像を表示し、なければ別URLの画像に置き換えるといった処理を apache上で行いたいと考えております。動作概要は以下の通りです。 www.web.comをWEBアプリサーバー、www.img.comを画像専用WEBサーバーとします。 www.img.comには必要な全ての画像が置いてあるものとします。 apacheのDocumentRootはそれぞれhtdocsとし、以下のように画像が置いてあるとします。 www.web.com - htdocs - img - a.gif www.img.com - htdocs - img - a.gif,b.gif,c.gif <img src="http://www.web.com/img/a.gif"> この場合、指定されているURLが存在しますので、この画像を表示します。 <img src="http://www.web.com/img/b.gif"> この場合、指定されたURLが存在しないので、リクエストURLを http://www.img.com/img/b.gif に書き換えてそちらの画像を表示します。 画像のNot found時にリダイレクトさせればよいと考え、下のような方法を考えついたのですが <FilesMatch "\.(gif|jpeg|jpg|png)$"> ErrorDocument 404 http://www.img.com/img/???? </FilesMatch> FilesMatch が後方参照できないのと、たとえできたとしても、大抵の場合は 最初から画像がない場合が多いので、エラーログに大量のエラーが記録されてしまう という理由により使えなさそうです。(LogLevelをerror以上に上げたくないので) mod_rewriteを使用した方法も考えておりますが、どうしても「ローカルにリクエストされた ファイルが存在しなければURL上書き」の処理分岐ができずに悩んでおります。 アプリケーション自体はPHPで書かれており、テンプレート置換により動的にページを 生成するのですが、最初は出力バッファリングをONにし、最終的な出力の直前でバッファの内容 から<img>タグの参照画像を抜き出し、全画像に対してローカルにあるかどうかをチェックし、 ローカルになければ<img>タグ内のURLを画像サーバーのものに書き換えるような 動作を考えましたが、それでは画像の管理性向上と、この処理によってかかる負荷の トレードオフが成立しないような気がしまして、apacheでそのような動作が実現できる のではないかと考えたのですが、行き詰まってしまいました。 実行環境は以下の通りです。 Fedora Core release 2 (Tettnang) Apache/1.3.31 PHP 4.3.9 良い方法をご教授いただけましたら幸いです。 よろしくお願い致します。 |
1