RewriteRule ^/img/(.+)\.jpe?g$ /img/$1.webp [L]
RewriteRule ^/img/(.+)\.png$ /img/$1.webp [L]
În .htaccess fișiere, calea URL pe care RewriteRule model meciuri împotriva, nu începe cu o bară oblică. Deci directivele de mai sus nu se vor potrivi niciodată cu URL-ul solicitat, așa că nu vor face nimic.În regulile tale anterioare, potriviți cu o cifră ca prim caracter, nu cu o bară oblică.
De exemplu, ar trebui să fie:
RewriteRule ^img/(.+)\.jpe?g$ /img/$1.webp [L]
In orice caz...
În folderul img din prestashop, există altul .htaccess
În funcţie de directivele cuprinse în /img/.htaccess fișier, atunci aceste directive ar putea suprascrie complet directivele mod_rewrite din părinte .htaccess fişier. Directivele mod_rewrite din părinte .htaccess s-ar putea să nu fie nici măcar procesat.
ACTUALIZAȚI: După ce am văzut acum /img/.htaccess fișier, atunci este OK - aceste directive nu vor trece peste directivele din părinte .htaccess dosar cu privire la rescrierea cererii către .webp imagini.
Deoarece aceste reguli suplimentare se aplică numai pentru /img subdirector și aveți deja un .htaccess dosar în /img subdirectorul, atunci puteți scrie aceste reguli în /img/.htaccess fișier în schimb (este necesară o ușoară ajustare). De exemplu:
# /img/.htaccess
RewriteEngine Pornit
RewriteRule ^(.+)\.jpe?g$ $1.webp [L]
The RewriteRule model potrivește cu calea URL relativ la directorul care conține .htaccess fişier. Deci, în acest caz, nu se potrivește cu /img subdirectorul.
Pentru a completa regula și a încorpora celelalte condiții pe care le-ați menționat, puteți face următoarele. Acum înapoi în rădăcină .htaccess fişier:
# /.htaccess
# Rescrieți cererea de imagine în „.webp” dacă este acceptată și există
RewriteCond %{HTTP_ACCEPT} imagine/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule ^(img/.+)\.(jpe?g|png)$ $1.webp [L,T=imagine/webp]
Dacă corespunzătoare .webp imaginea este garantată că există, atunci nu aveți neapărat nevoie de verificarea sistemului de fișiere (a doua condiție).
(Nu sunt sigur de ce ai avea nevoie E=REQUEST_image?)
Și dacă folosiți .htaccess dosar în /img subdirector:
# /img/.htaccess
# Rescrieți cererea de imagine în „.webp” dacă este acceptată și există
RewriteCond %{HTTP_ACCEPT} imagine/webp
RewriteCond %{DOCUMENT_ROOT}/img/$1.webp -f
RewriteRule ^(.+)\.(jpe?g|png)$ $1.webp [L,T=imagine/webp]
Deoparte:
RewriteRule ^([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]
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/ p/$1/$1$2$3.jpg [L]
A treia regulă nu face nimic și ar trebui eliminată. Și primele două reguli pot fi combinate cu ușurință folosind alternanța regex pe extensia fișierului. de exemplu. (jpg|webp).