![Nginx-Bilddateiname entfernt Dimensionen durch Ändern der URI mit regulären Ausdrücken](https://rvso.com/image/697381/Nginx-Bilddateiname%20entfernt%20Dimensionen%20durch%20%C3%84ndern%20der%20URI%20mit%20regul%C3%A4ren%20Ausdr%C3%BCcken.png)
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_files
anstelle der error_page
Direktive 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 ;
}