답변:
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
, 앞으로 오는 방문객들에게는 더 많은 투표권이 있습니다.
다음과 같은 것을 사용할 수 있습니다 (특정 사례에 적합하지 않음).
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에 중첩 할 수 없으므로 기본적으로 중첩 명령문 을 작성하는 대체 방법입니다 . 이 "핵"에 대한 공식 참조는 여기 를 참조 하십시오 .