Служите webp вместо jpg при определенных условиях, но устраняйте несколько цепочек перенаправления - PullRequest
0 голосов
/ 17 января 2020

У меня есть следующее правило в .htaccess, которое выполняет следующее:

  1. Перенаправляет файл jpeg в webp, если он есть (у меня есть оба типа для каждого файла изображения)
  2. Если браузер не поддерживает рендеринг webp, например, Safari, он обслуживает только файл по умолчанию jpeg type
RewriteEngine On 
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_URI}  (?i)(.*)(\.jpe?g|\.png)$ 
RewriteCond %{DOCUMENT_ROOT}%1.webp -f
RewriteRule (?i)(.*)(\.jpe?g|\.png)$ %1\.webp [L,T=image/webp,R] 

RewriteCond %{HTTP_ACCEPT} !image/webp [OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1$2$3/$4.jpg -f
RewriteRule ^(.*?)(images/)([0-9]+)/(.*)\.webp(.*)$ /$1$2$3/$4.jpg [R=307,L]

</IfModule>

<IfModule mod_headers.c>
Header append Vary Accept env=REDIRECT_accept
</IfModule>

AddType image/webp .webp

Проблема

GTMetrix снижает балл из-за multiple redirect chains, что на самом деле верно и действительно не лучший случай, независимо от того, забочусь я о балле GTMetrix или нет.


Вопрос

Как получить сценарий, в котором файлы webp будут обслуживаться при условии, что браузер его поддерживает, или же обслуживать версию jpeg этих файлов, но также не имея несколько перенаправлений?


Примечание: У меня также есть nginx на моем сервере, поэтому я также могу получить решение для применения через него вместо правила .htaccess.

Однако из-за того, что это сервер с несколькими доменами, общее правило не будет хорошим решением, обязательно указать правило nginx для конкретного домена, если его нельзя применить с помощью .htaccess .

...