【问题标题】:Change png|jpeg for webp on htaccess在 htaccess 上为 webp 更改 png|jpeg
【发布时间】:2018-05-28 00:47:44
【问题描述】:

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

由于我的 webp 图片名称,sn-p 无法正常工作。我的转换器没有更改扩展名,而是将新扩展名添加到图片的全名中。示例:

普通图片的网址:

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 任何帮助将非常感激。 谢谢。

【问题讨论】:

  • 如何改变 "RewriteCond %{REQUEST_URI} (.*)(\.(jpe?g|png))$ RewriteRule .* %1\.webp [L,T=image/webp] " 到 "重写规则 (.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1]"?看起来很相似,不知道它是否有帮助。
  • 感谢您的回复,埃里克。我以前尝试过,但没有用。我最终改变了图片的名称......!哈哈。还是谢谢!
  • 没问题。它只是通过更改图像名称来工作!酷

标签: apache .htaccess mod-rewrite webp litespeed


【解决方案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 样式表中的背景文件中使用仍然无用)

【讨论】:

  • 感谢@Leo 的详尽回答,我会在下一个项目中尝试。
猜你喜欢
  • 2021-10-05
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 2019-09-03
  • 2019-07-20
  • 2015-03-18
  • 2020-08-03
  • 1970-01-01
相关资源
最近更新 更多