在htaccess上更改png | jpeg for webp

时间:2018-05-28 00:47:44

标签: apache .htaccess mod-rewrite webp litespeed

我正在尝试在我的网站上显示使用LiteSpeed Web Server和htaccess文件的jpeg或png图片的webp图片。

由于我的webp图片的名称,该代码段无效。我的转换器没有更改扩展名,而是将新扩展名添加到图片的全名中。例如:

普通照片的网址:

http://domain.tld/path/to/pic/image.png (or jpe?g)

webp图片的网址:

http://domain.tld/path/to/pic/image.png.webp

这就是我的htaccess看起来的样子:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{REQUEST_URI}  (.*)(\.(jpe?g|png))$
RewriteRule .* %1\.webp [L,T=image/webp] 
</IfModule>
<IfModule mod_headers.c>
Header append Vary Accept env=REDIRECT_accept
</IfModule>
AddType image/webp .webp

我认为问题出现在RewriteRule中。我得到的结果是:

http://domain.tld/path/to/pic/image.webp

而不是:

http://domain.tld/path/to/pic/image.png.webp (or jpe?g.webp)

我尝试将RewriteRule行更改为此但不起作用:

RewriteRule .* %1\.(jpe?g|png).webp [L,T=image/webp]

有人可以对此有所了解吗?我是htaccess的初学者,我知道我没有使用正确的语法来使它工作。这是一个网站,以防你们想要检查页面并检查图像:LEXSTYLE 任何帮助将非常感激。 感谢。

1 个答案:

答案 0 :(得分:0)

规则的输出部分((jpeg | jpg)| png)中有一个“或”,而没有定义条件。

要解决此问题,可以使用(。*)设置$ 1,如下所示:

RewriteRule ^/path/to/imgdir(.*) /path/to/imgdir$1.webm

很安全,因为以前您已经受到限制:

RewriteCond %{REQUEST_URI}  (.*)(\.(jpe?g|png))$

进一步,您可能需要考虑仔细检查.webp文件在您的条件下是否存在:

RewriteCond %{DOCUMENT_ROOT}/$1\.webp -f

还请注意,首选方法变为:

<picture>
  <source srcset="/path/to/image.webp" type="image/webp">
  <img src="/path/to/image.jpg" alt="">
</picture>

((例如在CSS样式表中的背景文件中仍然无法使用)