繁体   English   中英

右击“另存为”选择jpg图片而不是webp,但是显示的是webp

[英]Right click "save as" selects jpg image instead of webp, but webp is displayed

我正在使用 .htaccess 向支持它的浏览器提供 webp 图像。

RewriteEngine On
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1.webp -f
RewriteRule (.+)\.(jpe?g|png|gif)$ $1.webp [T=image/webp,E=REQUEST_image]
Header append Vary Accept env=REQUEST_image
AddType image/webp .webp

来源:带有 htaccess 的 WebP 图片

基本上它所做的是从同一位置返回一个 .webp 图像而不是请求的 jpg/png/gif,如果它存在并且受支持。

这在 Chrome、Firefox、IE11、Edge 中运行良好……尚未测试 Safari。

然而,我的问题是,当我右键单击网站时,“另存为”,它会自动选择 .jpg 版本。 如果 .jpg 版本不存在,它会尝试保存整个 html。 预期行为是它保存显示的 .webp 版本(如果使用)。 奇怪的是,在执行相同操作时,它确实尝试在 Firefox 中保存 .webp,但是当我在 Firefox 中使用页面信息(Windows 上的 ctrl+i)尝试相同的操作时,它选择了 .jpg。

这怎么可能? 这有什么遗漏/错误吗?

我检查了显示的图像是否是实际的 webp,确实如此。 内容类型和文件大小都与 webp 相匹配。

我的工作解决方案是:


检查浏览器是否支持 WebP 图片

RewriteCond %{HTTP_ACCEPT} image/webp

检查 WebP 替换图像是否存在

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} -f

改为提供 WebP 图像

RewriteRule (.+)\.(jpe?g|png|gif)$ $1.webp [T=image/webp,E=REQUEST_image]

所以尝试将RewriteCond %{DOCUMENT_ROOT}/$1.webp -f更改为

RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} -f

在 Safari 和 Firefox 上测试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM