ユーザーが古い画像のURLにアクセスしようとすると、Nginxの書き換えルールを記述する必要があります。
/images/path/to/image.png
ファイルが存在しない場合は、次の場所にリダイレクトしてください:
/website_images/path/to/image.png
新しいURLに画像が存在する場合のみ、それ以外の場合は404に進みます。ホスト上のNginxのバージョンには、try_filesがまだありません。
ユーザーが古い画像のURLにアクセスしようとすると、Nginxの書き換えルールを記述する必要があります。
/images/path/to/image.png
ファイルが存在しない場合は、次の場所にリダイレクトしてください:
/website_images/path/to/image.png
新しいURLに画像が存在する場合のみ、それ以外の場合は404に進みます。ホスト上のNginxのバージョンには、try_filesがまだありません。
回答:
location /images/ {
if (-f $request_filename) {
break;
}
rewrite ^/images/(.*) /new_images/$1 permanent;
}
ただし、アップグレードするか、より良いホストを見つけるためにホストをバグにすることができます。
if
ロケーションブロック内では使用しないでください。悪いことが起こるかもしれません。
location ~* ^/images/(.+)$ {
root /www;
try_files /path/to/$1 /website_images/path_to/$1 /any/dir/$1 @your404;
}
$1
try_filesディレクティブで試行するファイル名になります。これは、目的の内容に合わせて作成されます。
これ、または、チェックせずに書き換えます。そのイメージが存在しない場合は、とにかく404が表示されます。
try_files
yet」)、将来ここに来る訪問者にとっては、この回答はより多くの賛成に値します。
次のようなものを使用できます(特定のケースではテストされていません):
location ^/images/(?<imgpath>.*)$ {
set $no_old 0;
set $yes_new 0;
if (!-f $request_filename)
{
set $no_old 1;
}
if (-f ~* "^/new_path/$imgpath")
{
set $yes_new 1$no_old;
}
# replacement exists in the new path
if ($yes_new = 11)
{
rewrite ^/images/(.*)$ /new_path/$1 permanent;
}
# no image in the new path!
if ($yes_new = 01)
{
return 404;
}
}
if
Nginxではネストできないため、これは基本的にネストされたステートメントを記述する代替方法です。この「ハック」の公式リファレンスについては、こちらをご覧ください。