2

ユーザーが次のような URL に移動した場合: http://www.domain.com/image/orange.jpgorange.jpg存在しないが、orange.png は存在します。

4

1 に答える 1

1

それは可能であるべきです。mod_rewrite を使用すると、ファイルの存在を確認できます。[L]また、フラグを使用してそのプロセスを積極的に停止しない場合に備えて、複数回の書き換えパスが可能です。.

したがって、出発点として次のようなものを試してください(テストされていません):

RewriteEngine on

RewriteCond %{REQUEST_URI} ^/image/([^/.]).jpg$
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^/image/([^/.]).jpg /image/$1.png

RewriteCond %{REQUEST_URI} ^/image/([^/.]).png$
RewriteCond %{REQUEST_URI} !-f
RewriteRule - /image/no-found [G,L]

上記は、中央サーバー構成 (ホストごとの構成) 内で定義されている場合に適用されます。.htaccess スタイル ファイルの場合、構文が若干異なり/ますRewriteRule。選択肢がある場合は、サーバー構成で書き換えを行います。.htaccess スタイル ファイルは回避策のようなもので、エラーが発生しやすいものです。可能であればそれらを避けるようにしてください。

ただし、このような設定は多少制限されており、維持するのが煩わしいことに注意してください。多くの場合、送信する応答を決定する前に、リクエストを処理し、いくつかの代替案をチェックする小さなラッパー スクリプト (おそらく php ベース) をセットアップする方が良い方法です。リクエストを次のように書き換えることができます。

RewriteEngine on
RewriteRule ^/image/([^/.])\..+$ /image.php?name=%1

image.phpこれで、急いで画像の既存のバージョンをチェックし、好みに合わせてヘッダーとコンテンツを返すことができるスクリプトを使用して、その要求を処理できます。

于 2013-02-10T08:11:02.403 に答える