1

いくつかの htaccess ファイルを Nginx vhost 構成に変換しようとしていますが、これに問題があります。

RewriteCond %{DOCUMENT_ROOT}/img/id_$1_$2 -f
RewriteRule ^id/(.+)/(.+)$ img/id_$1_$2 [NC,L]

ご覧のとおり、この条件は、正規表現を使用してファイルが存在するかどうかをチェックし、入力された URL によって動的にファイル名を生成します。

次の nginx ディレクティブは書き換えを正しく行いますが、事前にファイルをチェックしません:

rewrite ^/id/(.+)/(.+)$ /img/id_$1_$2 break;

ファイルが本当に存在する場合はこの書き換えを行いたいだけで、そうでない場合は別の書き換えが行われます。

すべてのアイデアが役立つ場合があります。どうもありがとう。

4

1 に答える 1

1
try_files $uri $uri/ @what_to_do;

そこから、次のように新しい場所を定義します。

location @what_to_do {
    rewrite ^/id/(.+)/(.+)$ /img/id_$1_$2 break;
}

try_filesディレクティブは $uri でファイルを検索し、次に $uri/ でファイルを検索しようとします。ここで、 $uri は URL で指定されたパスです。これに失敗すると、書き換えがある @what_to_do ロケーション ブロックに移動します。

ボーナスポイント: これにより、書き換えルールをサーバー構成の残りの部分からきちんと分離することもできます!

于 2013-05-16T20:19:33.603 に答える