htaccess schreibt /dir/*.jpg nur dann in /dir/webp/*.webp um, wenn eine WebP-Datei vorhanden ist

htaccess schreibt /dir/*.jpg nur dann in /dir/webp/*.webp um, wenn eine WebP-Datei vorhanden ist

Ich versuche, alle Website-Dateien ( *.jpg|*.gif|*.png) *.webpin ein Unterverzeichnis umzuschreiben, aber nur, wenn die *.webpDatei vorhanden ist. Vorherige und neue Dateien haben denselben Namen, nur die Erweiterung hat sich geändert, und *.webpalle Dateien befinden sich im Unterverzeichnis des ursprünglichen.

Ich habe Probleme damit, htaccess zu verwenden. Die Grundregeln sind:

  1. Stimmt nur mit PNG/JPG/GIF-Dateien überein
  2. Das Verzeichnismuster für die Originalbilder lautet:/site/views/00_projects/[VARIABLE MAIN DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/*.jpg
  3. Das neue *.webpVerzeichnis hat folgendes Muster:/site/views/00_projects/[VARIABLE DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/webp/*.webp
  4. 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 AcceptHTTP-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 pngBild und speichert den URL-Pfad in der Rückreferenz und den Dateinamen in der Rückreferenz (wird später in derjpggif$1$2RewriteRule AuswechslungZeichenfolge).

Der ersteZustand( RewriteCondDirektive), die anhand der HTTP_ACCEPTServervariable prüft, ob der Benutzeragent WEBP-Bilder unterstützt.

Der ZweiteZustandüberprüft, ob das Ziel-WebP-Bild vorhanden ist.

Das T=image/webpFlag ist erforderlich, um den richtigen MIME-Typ ( Content-TypeHeader) an den Client zurückzusenden.

verwandte Informationen