Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как настроить выдачу webp в DLE средствами .htaccess?

Как настроить выдачу webp в DLE средствами .htaccess?


     04.03.2023    dle, webp, dle 15.2    Общие вопросы, Ламерские вопросы    708

вопрос
Версия dle 15.2. Все изображения пережаты в webp и лежат рядом с оригиналами, пробовал в .htaccess код

<IfModule mod_rewrite.c>
  RewriteEngine On

  # Check if browser supports WebP images
  RewriteCond %{HTTP_ACCEPT} image/webp

  # Check if WebP replacement image exists
  RewriteCond %{DOCUMENT_ROOT}/$1.webp -f

  # Serve WebP image instead
  RewriteRule (.+)\.(jpe?g|png|gif)$ $1.webp [T=image/webp,E=REQUEST_image]
</IfModule>

<IfModule mod_headers.c>
  # Vary: Accept for all the requests to jpeg, png and gif
  Header append Vary Accept env=REQUEST_image
</IfModule>

<IfModule mod_mime.c>
  AddType image/webp .webp
</IfModule>


но сайт все равно выдает jpg упорно

Ответа пока нет


29 комментариев

lutskboy
Эксперт

lutskboy - 4 марта 2023 19:27 -

а в бд запросом изменить не вариант? а потом в консоли удалить все .png .jpg .jpeg

portak
Юзер

portak - 4 марта 2023 19:28 -

А что будет с юзером у которого нет поддержки webp в браузере?

lutskboy
Эксперт

lutskboy - 4 марта 2023 19:43 -

да ничего не будет. это их проблемы что у них допотопные браузеры

portak
Юзер

portak - 4 марта 2023 19:45 -

Ну это не ответ на мой вопрос, мой вопрос состоит в том, как отдавать юзеру с поддержкой webp (а без поддержки оставлять jpg) через htaccess. Предложенное не является решением никаким образом

lutskboy
Эксперт

lutskboy - 4 марта 2023 19:49 -

тогда на PHP делать или JS раз htaccess не помог. но это в стол заказов

portak
Юзер

portak - 4 марта 2023 19:54 -

С чего? Такие решения есть для wp и сотен других cms, правила работают исправно, просто я не понимаю как написать корректный путь до файла чтобы он был заменен, не знаю надо ли модифицировать файл в аплоуде при этом чтобы его правила при этом не конфликтовали с корневым...

Вы точно "эксперт"?

lutskboy
Эксперт

lutskboy - 4 марта 2023 19:58 -

попробуйте это убрать RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
и тут вам не благотворительная акция. захочу помогу, а хочу нет. никто никому ничем не обязан.

portak
Юзер

portak - 4 марта 2023 20:03 -

Ну все равно надо оставаться в ключе вопроса, даже если "не хочу помогать".

Меня смущает RewriteRule (.+)\.(jpe?g|png|gif)$ $1.webp [T=image/webp,E=REQUEST_image]
мне кажется (.+)\.(jpe?g|png|gif)$ не является правильным путем до файла по меркам DLE... судя по другим правилам там все иначе должно быть.

lutskboy
Эксперт

lutskboy - 4 марта 2023 20:21 -

может у вас nginx?

portak
Юзер

portak - 4 марта 2023 20:31 -

апач

lutskboy
Эксперт

lutskboy - 4 марта 2023 20:37 -

RewriteCond %{HTTP_ACCEPT} image/webp
RewriteRule ^ - [F]

вставьте только это. после RewriteEngine On и зайдите на сайт с браузера который поддерживает webp. Forbidden выдает?
если нет значит ваш сервер не определяет HTTP_ACCEPT.

portak
Юзер

portak - 4 марта 2023 20:40 -

Forbidden выдало, проверял с хрома последней версии с пк.

TeraMoune
Эксперт

TeraMoune - 4 марта 2023 20:46 -

Тут не прописывается путь, в правиле учитывается любая последовательность символов и букв. То есть под правило попадают буквально все запросы оканчивающиеся на перечисленные расширения.

portak
Юзер

portak - 4 марта 2023 20:50 -

Тогда почему у меня ничего не сработало? В какую сторону смотреть?

TeraMoune
Эксперт

TeraMoune - 4 марта 2023 20:51 -

А как вы поняли, что оно не работает ?)

portak
Юзер

portak - 4 марта 2023 20:52 -

инспект элемент отсылает на jpg, гугл падеспид говорит что изображения не в webp (при этом для проверки статичные имаги сделаны в picture и вручную добавлен webp и он их видит как надо).

TeraMoune
Эксперт

TeraMoune - 4 марта 2023 20:54 -


Ну в испекте кода и будет jpg, откройте картинку в запросе сравните тип файла и его Content-Length.

portak
Юзер

portak - 4 марта 2023 20:59 -

content-type: image/jpeg

TeraMoune
Эксперт

TeraMoune - 4 марта 2023 21:05 -

Тогда тут тебе никто ничем не поможет, пишите хостеру и спрашивайте с него. Думаю заменять оно и не должно, оно подменяет на уровне запроса данные. А ссылки прописанные остаются.

portak
Юзер

portak - 4 марта 2023 21:08 -

Возможно что-то стало проясняться... Некоторые изображения действительно стали image/webp, те которые остались image/jpeg у меня в стиле выводятся так style="background-image: url({image-2});" - и все они не изменены, хотя имеют webp копии

TeraMoune
Эксперт

TeraMoune - 4 марта 2023 21:13 -

ну кеш наверное остался, в таких случаях обновлять браузер надо всегда с ctrl+f5, либо в инспекторе кода есть опция игнорировать кеш.

portak
Юзер

portak - 4 марта 2023 21:21 -

делаю через очистка кэша и жесткая перезагрузка, но все равно часть изображений остается в оригинальном формате

lutskboy
Эксперт

lutskboy - 4 марта 2023 21:15 -

если у вас связка apache nginx то правила htaccess не будут применятся к картинкам. так как их отдает nginx

portak
Юзер

portak - 4 марта 2023 21:20 -

только апач

lutskboy
Эксперт

lutskboy - 4 марта 2023 21:28 -

скиньте ссылку на сайт. глянем

portak
Юзер

portak - 4 марта 2023 22:08 -

Думаю нет нужды давать ссылку на сайт, я почистил кэш клауда, отключил на сервере мод_пейджспид правила конверта jpg to webp и вроде как теперь все изображения при наличии webp отображаются верно, по крайней мере в консоли.

portak
Юзер

portak - 4 марта 2023 23:36 -

Еще вопрос возник, я не совсем разбираюсь в правилах реврайта, но указанные мной правила что, просто меняют расширение файла?

lutskboy
Эксперт

lutskboy - 6 марта 2023 13:06 -

нет. apache просто по запросу image.jpeg отдает image.webp

ruslanhydyrov
Юзер

ruslanhydyrov - 31 марта 2023 19:40 -

Для того, чтобы настроить выдачу изображений в формате WebP с помощью .htaccess на сайте, работающем на DLE, необходимо выполнить следующие шаги:

Убедитесь, что на сервере установлен модуль mod_rewrite.

Создайте файл .htaccess в корневой директории сайта, если его еще нет.

В файле .htaccess добавьте следующий код:
# Включаем mod_rewrite
RewriteEngine On

# Проверяем, поддерживает ли браузер WebP
RewriteCond %{HTTP_ACCEPT} image/webp

# Проверяем, есть ли файл с расширением .webp
RewriteCond %{REQUEST_FILENAME} (.*).(jpe?g|png)$
RewriteCond %{DOCUMENT_ROOT}%1.webp -f

# Выдаем файл в формате WebP
RewriteRule (.+).(jpe?g|png)$ $1.webp [T=image/webp,E=REQUEST_image:1]

# Если браузер не поддерживает WebP, то выдаем оригинальный файл
Header append Vary Accept env=REQUEST_image

Данный код выполняет следующие действия:

Включает модуль mod_rewrite.
Проверяет, поддерживает ли браузер WebP.
Проверяет, существует ли файл с расширением .webp.
Выдает файл в формате WebP, если все условия выполнены.
Если браузер не поддерживает WebP, то выдает оригинальный файл.
Сохраните файл .htaccess и загрузите его на сервер.

После настройки .htaccess, создайте копии всех изображений, которые вы хотите выдавать в формате WebP, с расширением .webp и поместите их в ту же папку, где находятся исходные изображения.

Проверьте работу сайта и убедитесь, что изображения выдаются в формате WebP, если браузер поддерживает этот формат, и в исходном формате, если браузер не поддерживает WebP.

Обратите внимание, что для использования формата WebP изображения должны быть оптимизированы и сохранены в этом формате. Также учтите, что формат WebP не поддерживается старыми версиями браузеров, поэтому возможно, что часть пользователей не сможет увидеть изображения в этом формате.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх