Я пытаюсь показать изображения 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 и знаю, что использую неправильный синтаксис для его работы. Это веб-сайт на случай, если вы, ребята, захотите проверить страницу и изображения: ЛЕКСТИЛЬ Любая помощь могла бы быть полезна. Спасибо.
Спасибо за ответ, Эрик. Я пробовал это раньше, и это не сработало. Я закончил тем, что изменил название картинок ...! ржу не могу. Спасибо, в любом случае!
нет проблем. Он просто работает, меняя имя изображения !! Здорово
У вас есть «или» в выходной части правила ((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, попробую в следующем проекте.
Как насчет изменения "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] "? Похоже, лол, не уверен, может ли это помочь.