如何使用htaccess提供webp图像?

时间:2019-05-12 14:04:44

标签: regex .htaccess mod-rewrite url-rewriting

如果图像(jpg或png)可以用作webp,我想提供.webp图像。如果没有,我想显示jpg或png。

RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)\.(jpe?g|png)(.*)$ $1.$2.webp [NC,L]

AddType image/webp .webp

这个问题,我需要最终的网址是这样的:

"myurl.com/foo.jpg.webp" 

如果webp文件存在,并且我不需要:

"myurl.com/foo.jpg"

作为后备解决方案。

2 个答案:

答案 0 :(得分:2)

如果所请求的URL以jpegpng结尾,则可以使用

测试相应的webp
RewriteCond %{REQUEST_FILENAME}.webp -f
RewriteRule ^ %{REQUEST_FILENAME}.webp [L]

如果您愿意的话,您可能会有更多的限制

RewriteCond %{REQUEST_FILENAME}.webp -f
RewriteRule \.(jpe?g|png)$ %{REQUEST_FILENAME}.webp [L]

如果条件和规则不匹配,请求将通过并按原样提供文件(.jpg / .png)。

答案 1 :(得分:1)

有些浏览器不完全支持 webp,你应该添加一个条件只发送到支持的浏览器:

<Files *.webp>
    Header set Vary "Accept-Encoding"
    AddType "image/webp" .webp
    AddEncoding webp .webp
</Files>

RewriteCond %{HTTP:Accept} image/webp
RewriteCond %{REQUEST_FILENAME}.webp -f
RewriteRule ^(.*)$ $1.webp [L]