Измените png | jpeg для webp на htaccess

Я пытаюсь показать изображения webp на своем веб-сайте, где есть изображение jpeg или png, с использованием веб-сервера LiteSpeed ​​и файла htaccess.

Фрагмент не работает из-за названия моих изображений в Интернете. Вместо изменения расширения мой конвертер добавил новое расширение к полному имени изображения. Пример:

URL обычных картинок:

http://domain.tld/path/to/pic/image.png (or jpe?g)

URL-адрес веб-изображений:

http://domain.tld/path/to/pic/image.png.webp

Вот так выглядит мой htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_URI}  (.*)(\.(jpe?g|png))$
RewriteRule .* %1\.webp [L,T=image/webp] 
</IfModule>
<IfModule mod_headers.c>
Header append Vary Accept env=REDIRECT_accept
</IfModule>
AddType image/webp .webp

Думаю, проблема в RewriteRule. В результате я получаю:

http://domain.tld/path/to/pic/image.webp

Вместо:

http://domain.tld/path/to/pic/image.png.webp (or jpe?g.webp)

Я попытался изменить строку RewriteRule на это, но это не сработало:

RewriteRule .* %1\.(jpe?g|png).webp [L,T=image/webp]

Может кто-нибудь пролить свет на это? Я новичок в htaccess и знаю, что использую неправильный синтаксис для его работы. Это веб-сайт на случай, если вы, ребята, захотите проверить страницу и изображения: ЛЕКСТИЛЬ Любая помощь могла бы быть полезна. Спасибо.

Как насчет изменения "RewriteCond% {REQUEST_URI} (. *) (\. (Jpe? G | png)) $ RewriteRule. *% 1 \ .webp [L, T = image / webp]" на "RewriteRule (. +) \. (jpe? g | png) $ 1.webp [T = image / webp, E = accept: 1] "? Похоже, лол, не уверен, может ли это помочь.

Eric 30.05.2018 15:38

Спасибо за ответ, Эрик. Я пробовал это раньше, и это не сработало. Я закончил тем, что изменил название картинок ...! ржу не могу. Спасибо, в любом случае!

alex_ls 07.06.2018 02:07

нет проблем. Он просто работает, меняя имя изображения !! Здорово

Eric 08.06.2018 03:42
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
3
3 265
1

Ответы 1

У вас есть «или» в выходной части правила ((jpeg | jpg) | png) без определения условия.

Чтобы решить эту проблему, вы можете использовать (. *) Для установки $ 1, например:

RewriteRule ^/path/to/imgdir(.*) /path/to/imgdir$1.webm

Это безопасно, поскольку ранее у вас уже было ограничение:

RewriteCond %{REQUEST_URI}  (.*)(\.(jpe?g|png))$

Кроме того, вы можете подумать о том, чтобы дважды проверить наличие файла .webp в ваших условиях:

RewriteCond %{DOCUMENT_ROOT}/$1\.webp -f

Также помните, что предпочтительным методом стал:

<picture>
  <source srcset = "/path/to/image.webp" type = "image/webp">
  <img src = "/path/to/image.jpg" alt = "">
</picture>

(который по-прежнему бесполезен для использования, например, в фоновых файлах в таблицах стилей CSS)

Спасибо за обстоятельный ответ @Leo, попробую в следующем проекте.

alex_ls 20.12.2018 04:22

Другие вопросы по теме