O nome do arquivo da imagem Nginx remove dimensões modificando o uri com regex

O nome do arquivo da imagem Nginx remove dimensões modificando o uri com regex

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_filesem vez da error_pagediretiva.

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 ;
}

informação relacionada