Правило перезаписи ^/img/(.+)\.jpe?g$ /img/$1.webp [L]
Правило перезаписи ^/img/(.+)\.png$ /img/$1.webp [L]
В .htaccess
файлы, URL-путь, по которому Правило перезаписи
шаблон соответствует, не начинается с косой черты. Таким образом, приведенные выше директивы никогда не будут соответствовать запрошенному URL-адресу, поэтому ничего не сделают.В ваших более ранних правилах вы сопоставляете цифру в качестве первого символа, а не косую черту.
Например, это должно быть:
Правило перезаписи ^img/(.+)\.jpe?g$ /img/$1.webp [L]
Однако...
В папке img в prestashop есть еще один .htaccess
В зависимости от указаний, содержащихся в /img/.htaccess
файл, то эти директивы могут полностью переопределить директивы mod_rewrite в родительском .htaccess
файл. Директивы mod_rewrite в родительском .htaccess
может даже не обрабатываться.
ОБНОВИТЬ: Теперь, увидев /img/.htaccess
файл, то все в порядке - эти директивы не будут выше директив в родительском .htaccess
файл о переписывании запроса на .webp
картинки.
Поскольку эти дополнительные правила применяются только к / изображение
подкаталог, и у вас уже есть .htaccess
файл в / изображение
подкаталог, то вы можете написать эти правила в /img/.htaccess
вместо файла (требуется небольшая корректировка). Например:
# /img/.htaccess
RewriteEngine включен
Правило перезаписи ^(.+)\.jpe?g$ $1.webp [L]
Правило перезаписи
шаблон соответствует URL-пути родственник в каталог, содержащий .htaccess
файл. Таким образом, в данном случае он не соответствует / изображение
подкаталог.
Чтобы завершить правило и включить другие условия, которые вы упомянули, вы можете сделать следующее. Теперь вернемся в корень .htaccess
файл:
# /.htaccess
# Переписать запрос изображения в ".webp", если он поддерживается и существует
RewriteCond %{HTTP_ACCEPT} изображение/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
Правило перезаписи ^(img/.+)\.(jpe?g|png)$ $1.webp [L,T=image/webp]
Если соответствующий .webp
image гарантированно существует, тогда вам не обязательно нужна проверка файловой системы (второе условие).
(Я не уверен, зачем вам нужно E=REQUEST_image
?)
А если использовать .htaccess
файл в / изображение
подкаталог:
# /img/.htaccess
# Переписать запрос изображения в ".webp", если он поддерживается и существует
RewriteCond %{HTTP_ACCEPT} изображение/webp
RewriteCond %{DOCUMENT_ROOT}/img/$1.webp -f
Правило перезаписи ^(.+)\.(jpe?g|png)$ $1.webp [L,T=image/webp]
В стороне:
Правило перезаписи ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/ p/$1/$1$2$3.webp [L]
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/ p/$1/$1$2$3.webp [L]
Правило перезаписи ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/ р/$1/$1$2$3.jpg [L]
Третье правило ничего не делает и должно быть удалено. И первые два правила можно легко комбинировать, используя чередование регулярных выражений в расширении файла. например. (jpg|webp)
.