![O nome do arquivo da imagem Nginx remove dimensões modificando o uri com regex](https://rvso.com/image/697381/O%20nome%20do%20arquivo%20da%20imagem%20Nginx%20remove%20dimens%C3%B5es%20modificando%20o%20uri%20com%20regex.png)
Na configuração do nginx, qual é a melhor maneira de retornar a imagem original quando o tamanho de imagem necessário não foi encontrado, dadas as convenções de nomenclatura/notação de tamanho de imagem do wordpress.
Então, digamos que se /image-name-150x170.png não for encontrado, quero que /image-name.png seja retornado. A parte -150-170 pode ser alguns outros números. Portanto, quero que o traço de 1 a 4 dígitos x 1 a 4 dígitos antes do ponto no nome do arquivo seja removido.
Quero colocar a substituição no código uri dentro do bloco de localização @static_full ou reescrever. imaginando qual seria o melhor desempenho em termos de desempenho.
#some locations here and then
location ~* ^.+\.(png|gif|jpg|jpeg){
access_log off;
log_not_found off;
expires max;
error_page 404 = @static_full; #if not found, seek #static_ful
}
location @static_full{
#modify uri here to remove image dimensions like below
#uri = remove dash 1-4 digits x 1-4 digits before dot
#or rewrite to original name
}
location / {
try_files $uri $uri/ /index.php?$args ;
}
ATUALIZAÇÃO, descobri como fazer isso. O seguinte fez o que eu queria fazer.
location @static_full{
#modify uri here to remove image dimensions like below
#uri = remove dash three digits x three digits before dot
rewrite "^(.*)(-[\d]{1,4}+x[\d]{1,4}+.)([\w]{3,4})" $1.$3 break;
}
Responder1
Você pode considerar usar try_files
em vez da error_page
diretiva.
try_files $uri @static_full;
Veresse documentopara detalhes.
EDIT - solução completa adicionada:
location ~* ^.+\.(png|gif|jpg|jpeg) {
try_files $uri @static_full;
access_log off;
log_not_found off;
expires max;
}
location @static_full {
rewrite "^(.*)(-[\d]{1,4}+x[\d]{1,4}+.)([\w]{3,4})" $1.$3 break;
}
location / {
try_files $uri $uri/ /index.php?$args ;
}