RewriteRule ^/img/(.+)\.jpe?g$ /img/$1.webp [L]
RewriteRule ^/img/(.+)\.png$ /img/$1.webp [L]
ใน .htaccess
ไฟล์ URL เส้นทางที่ เขียนกฎใหม่
ลวดลาย การแข่งขันต่อไม่เริ่มต้นด้วยเครื่องหมายทับ ดังนั้น คำสั่งด้านบนจะไม่ตรงกับ URL ที่ร้องขอ ดังนั้นจะไม่ทำอะไรเลยในกฎก่อนหน้านี้ คุณจะจับคู่กับตัวเลขเป็นอักขระตัวแรก ไม่ใช่เครื่องหมายทับ
ตัวอย่างเช่น ควรเป็น:
RewriteRule ^img/(.+)\.jpe?g$ /img/$1.webp [L]
อย่างไรก็ตาม...
ในโฟลเดอร์ img ใน prestashop มีอีกอันหนึ่ง .htaccess
ขึ้นอยู่กับคำสั่งที่มีอยู่ใน /img/.htaccess
ไฟล์คำสั่งเหล่านี้อาจแทนที่คำสั่ง mod_rewrite ในพาเรนต์อย่างสมบูรณ์ .htaccess
ไฟล์. คำสั่ง mod_rewrite ในพาเรนต์ .htaccess
อาจไม่ได้รับการประมวลผลด้วยซ้ำ
อัปเดต: บัดนี้ได้เห็น /img/.htaccess
ไฟล์นั้นก็โอเค - คำสั่งเหล่านี้จะไม่เกินคำสั่งในพาเรนต์ .htaccess
ไฟล์เกี่ยวกับการเขียนคำขอใหม่ไปยัง .webp
ภาพ
เนื่องจากกฎเพิ่มเติมเหล่านี้ใช้เฉพาะกับ /img
ไดเร็กทอรีย่อย และคุณมีไฟล์ .htaccess
ไฟล์ใน /img
ไดเร็กทอรีย่อย คุณสามารถเขียนกฎเหล่านี้ใน /img/.htaccess
ไฟล์แทน (ต้องมีการปรับแต่งเล็กน้อย) ตัวอย่างเช่น:
# /img/.htaccess
RewriteEngine เปิดอยู่
RewriteRule ^(.+)\.jpe?g$ $1.webp [L]
เดอะ เขียนกฎใหม่
ลวดลาย ตรงกับเส้นทาง URL ญาติ ไปยังไดเร็กทอรีที่มีไฟล์ .htaccess
ไฟล์. ดังนั้น ในกรณีนี้ จึงไม่ตรงกับข้อ /img
ไดเร็กทอรีย่อย
เพื่อให้กฎสมบูรณ์และรวมเงื่อนไขอื่นๆ ที่คุณกล่าวถึง คุณสามารถทำสิ่งต่อไปนี้ ตอนนี้กลับไปที่ราก .htaccess
ไฟล์:
# /.htaccess
# เขียนคำขอรูปภาพใหม่เป็น ".webp" หากรองรับและมีอยู่
RewriteCond %{HTTP_ACCEPT} รูปภาพ/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule ^(img/.+)\.(jpe?g|png)$ $1.webp [L,T=image/webp]
ถ้าตรงกัน .webp
อิมเมจรับประกันว่าจะมีอยู่ ดังนั้นคุณไม่จำเป็นต้องตรวจสอบระบบไฟล์ (เงื่อนไขที่สอง)
(ฉันไม่แน่ใจว่าทำไมคุณจะต้อง E=REQUEST_image
?)
และถ้าใช้ .htaccess
ไฟล์ใน /img
ไดเรกทอรีย่อย:
# /img/.htaccess
# เขียนคำขอรูปภาพใหม่เป็น ".webp" หากรองรับและมีอยู่
RewriteCond %{HTTP_ACCEPT} รูปภาพ/webp
RewriteCond %{DOCUMENT_ROOT}/img/$1.webp -f
RewriteRule ^(.+)\.(jpe?g|png)$ $1.webp [L,T=image/webp]
นอกเหนือ:
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]
กฎข้อที่ 3 ไม่ได้ทำอะไรและควรลบออก และสามารถรวมกฎสองข้อแรกได้อย่างง่ายดายโดยใช้การสลับ regex กับนามสกุลไฟล์ เช่น. (jpg|เว็บพี)
.