
我試圖將所有網站檔案 ( *.jpg|*.gif|*.png
) 重寫到*.webp
子目錄中,但前提是該*.webp
檔案存在。先前的檔案和新檔案具有相同的名稱,只是更改了副檔名,並且*.webp
檔案都位於原始檔案的子目錄下。
我正在努力使用 htaccess 來完成這項工作。基本規則是:
- 僅符合 PNG/JPG/GIF 文件
- 原始影像目錄模式為:
/site/views/00_projects/[VARIABLE MAIN DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/*.jpg
- 新的
*.webp
目錄模式是:/site/views/00_projects/[VARIABLE DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/webp/*.webp
- 僅當 webp 檔案存在時才重寫
我真的不知道如何讓它發揮作用。有人可以幫忙嗎?
答案1
嚴格來說,您還需要確保發出請求的使用者代理程式支援 WEBP 影像(即檢查Accept
HTTP 請求標頭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
,jpg
或gif
圖像,並將 URL 路徑保存在$1
反向引用中,並將文件名保存在$2
反向引用中(稍後在RewriteRule
代換細繩)。
首先狀態(RewriteCond
指令)檢查HTTP_ACCEPT
伺服器變量,檢查使用者代理是否支援 WEBP 影像。
第二狀態檢查目標 webp 影像是否存在。
該T=image/webp
標誌是將正確的 mime 類型(Content-Type
標頭)發送回客戶端所必需的。