![El nombre del archivo de imagen de Nginx elimina las dimensiones modificando uri con expresiones regulares](https://rvso.com/image/697381/El%20nombre%20del%20archivo%20de%20imagen%20de%20Nginx%20elimina%20las%20dimensiones%20modificando%20uri%20con%20expresiones%20regulares.png)
En la configuración de nginx, ¿cuál es la mejor manera de devolver la imagen original cuando no se encontró el tamaño de imagen requerido, dadas las convenciones de notación de tamaño/nombramiento de imágenes de WordPress?
Entonces, digamos que si no se encuentra /image-name-150x170.png, quiero que se devuelva /image-name.png. -150-170 parte pueden ser otros números. Por lo tanto, quiero eliminar el guión de 1 a 4 dígitos x 1 a 4 dígitos antes del punto en el nombre del archivo.
Quiero reemplazar el código uri dentro del bloque de ubicación @static_full o reescribirlo. preguntándose cuál sería mejor en cuanto a rendimiento.
#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 ;
}
ACTUALIZACIÓN, descubrí cómo hacerlo. Lo siguiente hizo lo que quería hacer.
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;
}
Respuesta1
Podría considerar usar try_files
en lugar de la error_page
directiva.
try_files $uri @static_full;
Vereste documentopara detalles.
EDITAR - solución completa agregada:
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 ;
}