Isso provavelmente é mais fácil de ser feito com vários blocos if
, mas leia este primeiro , porque você deve usar apenas instruções como rewrite ... last
ou return
dentro de um bloco if
.
Algo assim pode funcionar para você:
location ~ ^/wp-content/uploads(?<name>/.*)?$ {
if (-f $document_root/sites/default/files$name) {
return 301 /sites/default/files$name;
}
if (...) { ... }
if (...) { ... }
if (...) { ... }
if (...) { ... }
return 404;
}
Você precisa posicionar o bloco location
acima de outras expressões regulares location
blocks, que podem entrar em conflito com ele. Consulte este documento para obter detalhes.
EDIT: Talvez pareça melhor como parâmetros para uma diretiva try_files
. Não sei se existe um limite superior no tamanho de uma declaração try_files
:
location ~ ^/wp-content/uploads(?<name>/.*)?$ {
try_files
/sites/default/files$name
/sites/default/author_images$name
/sites/default/blog_images$name
...
=404;
}
Pode ser necessário experimentar o ?
final na expressão regular. Você quer que o URI /wp-content/uploads
corresponda ao local?