
Ich versuche, alle Website-Dateien ( *.jpg|*.gif|*.png
) *.webp
in ein Unterverzeichnis umzuschreiben, aber nur, wenn die *.webp
Datei vorhanden ist. Vorherige und neue Dateien haben denselben Namen, nur die Erweiterung hat sich geändert, und *.webp
alle Dateien befinden sich im Unterverzeichnis des ursprünglichen.
Ich habe Probleme damit, htaccess zu verwenden. Die Grundregeln sind:
- Stimmt nur mit PNG/JPG/GIF-Dateien überein
- Das Verzeichnismuster für die Originalbilder lautet:
/site/views/00_projects/[VARIABLE MAIN DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/*.jpg
- Das neue
*.webp
Verzeichnis hat folgendes Muster:/site/views/00_projects/[VARIABLE DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/webp/*.webp
- Nur neu schreiben, WENN die WebP-Datei vorhanden ist
Ich habe wirklich keine Ahnung, wie ich das zum Laufen bringen soll. Kann mir jemand helfen?
Antwort1
Genau genommen müssen Sie auch sicherstellen, dass der anfordernde Benutzeragent WEBP-Bilder unterstützt (d. h. den Accept
HTTP-Anforderungsheader auf überprüfen image/webp
).
Versuchen Sie Folgendes oben in der Stammdatei .htaccess
:
RewriteEngine On
# Rewrite images to WebP if they exist
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1/webp/$2.webp -f
RewriteRule ^(site/views/00_projects/[^/]+/content/image/[^/]+)/([^/]+)\.(?:png|jpg|gif)$ $1/webp/$2.webp [T=image/webp,L]
DerRewriteRule
Muster(z. B. ^(site/views/00_projects/[^/]+/content/image/[^/]+)/([^/]+)\.(?:png|jpg|gif)$
) stimmt mit dem angeforderten überein oder png
Bild und speichert den URL-Pfad in der Rückreferenz und den Dateinamen in der Rückreferenz (wird später in derjpg
gif
$1
$2
RewriteRule
AuswechslungZeichenfolge).
Der ersteZustand( RewriteCond
Direktive), die anhand der HTTP_ACCEPT
Servervariable prüft, ob der Benutzeragent WEBP-Bilder unterstützt.
Der ZweiteZustandüberprüft, ob das Ziel-WebP-Bild vorhanden ist.
Das T=image/webp
Flag ist erforderlich, um den richtigen MIME-Typ ( Content-Type
Header) an den Client zurückzusenden.