我正在尝试在我的网站上显示使用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 任何帮助将非常感激。 感谢。
答案 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样式表中的背景文件中仍然无法使用)