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)
.