У меня есть следующее правило в .htaccess
, которое выполняет следующее:
- Перенаправляет файл
jpeg
в webp
, если он есть (у меня есть оба типа для каждого файла изображения) - Если браузер не поддерживает рендеринг
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
.