htaccess reescribe /dir/*.jpg a /dir/webp/*.webp solo cuando existe el archivo webp

htaccess reescribe /dir/*.jpg a /dir/webp/*.webp solo cuando existe el archivo webp

Estoy intentando reescribir todos los archivos del sitio web ( *.jpg|*.gif|*.png) *.webpen un subdirectorio, pero solo cuando el *.webparchivo existe. Los archivos anteriores y nuevos tienen el mismo nombre, solo se cambia la extensión y *.webplos archivos están todos bajo el subdirectorio del original.

Estoy luchando con htaccess para hacer el trabajo. Las reglas básicas son:

  1. Sólo coincide con el archivo PNG/JPG/GIF
  2. El patrón del directorio de imágenes originales es:/site/views/00_projects/[VARIABLE MAIN DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/*.jpg
  3. El nuevo *.webpdirectorio es el patrón:/site/views/00_projects/[VARIABLE DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/webp/*.webp
  4. Sólo reescribe SI existe el archivo webp

Realmente no tengo idea de cómo hacerlo funcionar. ¿Alguien puede ayudar?

Respuesta1

Estrictamente hablando, también debe asegurarse de que el agente de usuario que realiza la solicitud admita imágenes WEBP (es decir, verifique el Acceptencabezado de la solicitud HTTP image/webp).

Pruebe lo siguiente cerca de la parte superior del .htaccessarchivo raíz:

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]

ElRewriteRule patrón(es decir, ) coincide con la imagen o el archivo ^(site/views/00_projects/[^/]+/content/image/[^/]+)/([^/]+)\.(?:png|jpg|gif)$solicitado y guarda la ruta URL en la referencia anterior y el nombre del archivo en la referencia anterior (utilizado más adelante en elpngjpggif$1$2RewriteRule sustitucióncadena).

La primeracondición( RewriteConddirectiva) que compara con la HTTP_ACCEPTvariable del servidor, verifica que el agente de usuario admita imágenes WEBP.

El segundocondicióncomprueba que la imagen webp de destino existe.

La T=image/webpbandera es necesaria para enviar el tipo MIME correcto ( Content-Typeencabezado) al cliente.

información relacionada