首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有在存在webp文件时,htaccess才会重写/dir/*..jpg到/dir/webp/*.webp

只有在存在webp文件时,htaccess才会重写/dir/*..jpg到/dir/webp/*.webp
EN

Server Fault用户
提问于 2021-07-24 12:37:05
回答 1查看 1.5K关注 0票数 3

我试图在子目录中将所有网站文件(*.jpg|*.gif|*.png)重写为*.webp,但只在存在*.webp文件的情况下。以前的文件和新的文件具有相同的名称,只更改扩展名和*.webp文件都在原始文件的子目录下。

我正为做这份工作而挣扎。基本规则如下:

  1. 只匹配PNG/JPG/GIF文件
  2. 原始图像dir模式是:/site/views/00_projects/[VARIABLE MAIN DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/*.jpg
  3. 新的*.webp dir is模式是:/site/views/00_projects/[VARIABLE DIR NAME HERE]/content/image/[VARIABLE SUBDIR NAME HERE]/webp/*.webp
  4. 只有在存在webp文件时才重写

我真的不知道该怎么做。有人能帮忙吗?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-07-24 15:49:57

严格地说,您还需要确保发出请求的用户代理支持WEBP映像(即。检查Accept header以获取image/webp)。

在根.htaccess文件顶部附近尝试以下操作:

代码语言:javascript
复制
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)$)匹配请求的pngjpggif图像,并在$1反向引用中保存D9路径,在$2反向引用中保存文件名(稍后在RewriteRule替代字符串中使用)。

第一个条件(RewriteCond指令)检查HTTP_ACCEPT服务器变量,检查用户代理是否支持D13映像。

第二个条件检查目标webp映像是否存在。

T=image/webp标志对于将正确的mime类型(Content-Type标头)发送回客户端是必要的。

票数 4
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1070508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档