只有當 webp 檔案存在時,htaccess 將 /dir/*.jpg 重寫為 /dir/webp/*.webp

只有當 webp 檔案存在時,htaccess 將 /dir/*.jpg 重寫為 /dir/webp/*.webp

我試圖將所有網站檔案 ( *.jpg|*.gif|*.png) 重寫到*.webp子目錄中,但前提是該*.webp檔案存在。先前的檔案和新檔案具有相同的名稱,只是更改了副檔名,並且*.webp檔案都位於原始檔案的子目錄下。

我正在努力使用 htaccess 來完成這項工作。基本規則是:

  1. 僅符合 PNG/JPG/GIF 文件
  2. 原始影像目錄模式為:/site/views/00_projects/[VARIABLE MAIN DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/*.jpg
  3. 新的*.webp目錄模式是:/site/views/00_projects/[VARIABLE DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/webp/*.webp
  4. 僅當 webp 檔案存在時才重寫

我真的不知道如何讓它發揮作用。有人可以幫忙嗎?

答案1

嚴格來說,您還需要確保發出請求的使用者代理程式支援 WEBP 影像(即檢查AcceptHTTP 請求標頭image/webp)。

在根文件頂部附近嘗試以下操作.htaccess

RewriteEngine On

# Rewrite images to WebP if they exist
RewriteCond %{HTTP_ACCEPT} image/webp
RewriteCond %{DOCUMENT_ROOT}/$1/webp/$2.webp -f
RewriteRule ^(site/views/00_projects/[^/]+/content/image/[^/]+)/([^/]+)\.(?:png|jpg|gif)$ $1/webp/$2.webp [T=image/webp,L]

RewriteRule 圖案(即。^(site/views/00_projects/[^/]+/content/image/[^/]+)/([^/]+)\.(?:png|jpg|gif)$)匹配請求的png,jpggif圖像,並將 URL 路徑保存在$1反向引用中,並將文件名保存在$2反向引用中(稍後在RewriteRule 代換細繩)。

首先狀態RewriteCond指令)檢查HTTP_ACCEPT伺服器變量,檢查使用者代理是否支援 WEBP 影像。

第二狀態檢查目標 webp 影像是否存在。

T=image/webp標誌是將正確的 mime 類型(Content-Type標頭)發送回客戶端所必需的。

相關內容