.htaccess配置无追加后缀WebP替代JPG/PNG加载失效修复
问题根因
现有配置无法匹配无追加后缀同名WebP文件的核心原因是文件存在性判断逻辑错误:
- 规则中
RewriteCond %{REQUEST_FILENAME}.webp -f的判断逻辑为:在当前请求的物理文件路径末尾直接拼接.webp后缀,检查该文件是否存在。即请求image.jpg时,仅会校验image.jpg.webp是否存在,这也是你之前只能识别追加了.jpg后缀的WebP文件的原因。 - 当你删除
image.jpg.webp后,该判断条件不成立,重写规则不会触发,服务器会直接返回原JPG/PNG文件,因此右键保存图片会显示为JPG格式。
修正后可用配置
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /wordpress/ # 仅对支持WebP格式的浏览器生效 RewriteCond %{HTTP_ACCEPT} image/webp # 校验同名无后缀追加的WebP文件是否存在 RewriteCond %{DOCUMENT_ROOT}/wordpress/$1.webp -f # 将JPG/PNG请求重写到对应WebP资源,设置正确MIME类型,匹配后停止后续重写 RewriteRule ^(.+)\.(jpg|jpeg|jpe|png)$ $1.webp [T=image/webp,L,NC] </IfModule> <IfModule mod_mime.c> # 确保服务器正确识别WebP文件的MIME类型 AddType image/webp .webp </IfModule>
配置说明
- 调整了文件存在性判断逻辑:通过正则捕获组
$1拿到原文件去掉格式后缀的文件名部分(如请求image.jpg时$1值为image),直接校验image.webp是否存在,完全匹配你需要加载无追加后缀同名WebP的需求。 - 新增
L标志:匹配到该重写规则后立即停止后续重写流程,避免被WordPress默认的路由重写规则干扰导致资源404或返回错误。 - 补充WebP MIME类型声明:避免服务器返回WebP资源时Content-Type响应头错误,导致浏览器无法正确识别资源格式。
验证注意事项
- 配置更新后需清空浏览器缓存,若站点接入了CDN、WordPress缓存插件也需要同步清空缓存,避免旧缓存规则干扰测试结果。
- 验证时可打开浏览器开发者工具的「网络」面板,找到对应图片请求查看响应头:
Content-Type值为image/webp且响应状态为200即为配置生效。
内容的提问来源于stack exchange,提问作者kodfire
相关产品推荐
相关产品推荐

