簡體   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