我试图在子目录中将所有网站文件(*.jpg|*.gif|*.png)重写为*.webp,但只在存在*.webp文件的情况下。以前的文件和新的文件具有相同的名称,只更改扩展名和*.webp文件都在原始文件的子目录下。
我正为做这份工作而挣扎。基本规则如下:
/site/views/00_projects/[VARIABLE MAIN DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/*.jpg*.webp dir is模式是:/site/views/00_projects/[VARIABLE DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/webp/*.webp我真的不知道该怎么做。有人能帮忙吗?
发布于 2021-07-24 15:49:57
严格地说,您还需要确保发出请求的用户代理支持WEBP映像(即。检查Accept header以获取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图像,并在$1反向引用中保存D9路径,在$2反向引用中保存文件名(稍后在RewriteRule替代字符串中使用)。
第一个条件(RewriteCond指令)检查HTTP_ACCEPT服务器变量,检查用户代理是否支持D13映像。
第二个条件检查目标webp映像是否存在。
T=image/webp标志对于将正确的mime类型(Content-Type标头)发送回客户端是必要的。
https://serverfault.com/questions/1070508
复制相似问题