Nginx-Bilddateiname entfernt Dimensionen durch Ändern der URI mit regulären Ausdrücken

Nginx-Bilddateiname entfernt Dimensionen durch Ändern der URI mit regulären Ausdrücken

Was ist in der Nginx-Konfiguration die beste Möglichkeit, das Originalbild zurückzugeben, wenn die erforderliche Bildgröße angesichts der WordPress-Konventionen zur Bildbenennung/-größe nicht gefunden wurde?

Wenn also /image-name-150x170.png nicht gefunden wird, möchte ich, dass /image-name.png zurückgegeben wird. Der Teil -150-170 kann eine andere Zahl sein. Daher möchte ich, dass der Bindestrich 1-4 Ziffern x 1-4 Ziffern vor dem Punkt im Dateinamen entfernt wird.

Ich möchte den Ersetzungscode im URI in den @static_full-Standortblock einfügen oder neu schreiben. Ich frage mich, was leistungsmäßig besser wäre.

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

UPDATE, ich habe herausgefunden, wie es geht. Folgendes hat das bewirkt, was ich tun wollte.

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

Antwort1

Sie könnten try_filesanstelle der error_pageDirektive die Verwendung in Erwägung ziehen.

try_files $uri @static_full;

Sehendieses Dokumentfür Details.

BEARBEITEN – vollständige Lösung hinzugefügt:

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

verwandte Informationen