0

我正在尝试在我的网站上显示 webp 图片,其中有使用 LiteSpeed Web 服务器和 htaccess 文件的 jpeg 或 png 图片。

由于我的 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 任何帮助将不胜感激。谢谢。

4

1 回答 1

-1

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

要解决这个问题,您可以使用 (.*) 设置 $1,如下所示:

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

Wich 是安全的,因为之前您已经遇到了限制:

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 样式表中的背景文件中使用它仍然无用)

于 2018-12-06T15:55:19.060 回答