RewriteRule ^/img/(.+)\.jpe?g$ /img/$1.webp [L]
RewriteRule ^/img/(.+)\.png$ /img/$1.webp [L]
Trong .htaccess các tệp, đường dẫn URL mà viết lại quy tắc mẫu so khớp, không bắt đầu bằng dấu gạch chéo. Vì vậy, các lệnh trên sẽ không bao giờ khớp với URL được yêu cầu, vì vậy sẽ không làm gì cả.Trong các quy tắc trước đó của bạn, bạn khớp với một chữ số là ký tự đầu tiên, không phải dấu gạch chéo.
Ví dụ: nó phải là:
RewriteRule ^img/(.+)\.jpe?g$ /img/$1.webp [L]
Tuy nhiên...
Trong thư mục img trong prestashop, có một cái khác .htaccess
Tùy thuộc vào các chỉ thị có trong /img/.htaccess tệp thì các lệnh này có thể ghi đè hoàn toàn các lệnh mod_rewrite trong tệp gốc .htaccess tập tin. Các chỉ thị mod_rewrite trong cha mẹ .htaccess thậm chí có thể không được xử lý.
CẬP NHẬT: Bây giờ đã nhìn thấy /img/.htaccess tệp thì không sao - các lệnh này sẽ không vượt qua các lệnh trong phần gốc .htaccess tập tin liên quan đến việc viết lại yêu cầu cho .webp hình ảnh.
Vì các quy tắc bổ sung này chỉ áp dụng cho /img thư mục con và bạn đã có một .htaccess tập tin trong /img thư mục con thì bạn có thể viết các quy tắc này trong /img/.htaccess tập tin thay thế (yêu cầu điều chỉnh nhẹ). Ví dụ:
# /img/.htaccess
Viết LạiEngine Trên
RewriteRule ^(.+)\.jpe?g$ $1.webp [L]
Các viết lại quy tắc mẫu khớp với đường dẫn URL liên quan đến vào thư mục chứa .htaccess tập tin. Vì vậy, trong trường hợp này, nó không phù hợp với /img thư mục con.
Để hoàn thành quy tắc và kết hợp các điều kiện khác mà bạn đã đề cập, bạn có thể làm như sau. Bây giờ trở lại thư mục gốc .htaccess tập tin:
# /.htaccess
# Viết lại yêu cầu hình ảnh thành ".webp" nếu được hỗ trợ và tồn tại
RewriteCond %{HTTP_ACCCEPT} hình ảnh/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule ^(img/.+)\.(jpe?g|png)$ $1.webp [L,T=image/webp]
Nếu tương ứng .webp hình ảnh được đảm bảo tồn tại thì bạn không nhất thiết cần kiểm tra hệ thống tệp (điều kiện thứ hai).
(Tôi không chắc tại sao bạn lại cần E=REQUEST_image?)
Và nếu sử dụng .htaccess tập tin trong /img thư mục con:
# /img/.htaccess
# Viết lại yêu cầu hình ảnh thành ".webp" nếu được hỗ trợ và tồn tại
RewriteCond %{HTTP_ACCCEPT} hình ảnh/webp
RewriteCond %{DOCUMENT_ROOT}/img/$1.webp -f
RewriteRule ^(.+)\.(jpe?g|png)$ $1.webp [L,T=image/webp]
Qua một bên:
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]
Quy tắc thứ 3 không làm bất cứ điều gì và nên được loại bỏ. Và hai quy tắc đầu tiên có thể được kết hợp dễ dàng bằng cách sử dụng xen kẽ biểu thức chính quy trên phần mở rộng tệp. ví dụ. (jpg|webp).