如何在根目录.htaccess配置图片全局缓存并排除指定子目录
.htaccess 排除指定子目录图片缓存配置方案
配置失效原因
return (<Directory> 标签**不支持在.htaccess文件中使用**,该标签仅允许在Apache主配置(httpd.conf)或虚拟主机配置段中声明,这是你之前配置不生效的核心原因。 ## 正确配置方案 直接在根目录.htaccess文件中添加如下规则即可(原有全站png/jpg缓存1个月的配置可以保留,以下规则会覆盖对应子目录的缓存策略): ```apache # 匹配/IMG/BIG/目录下的所有png、jpg文件,标记NO_CACHE环境变量 SetEnvIf Request_URI "^/IMG/BIG/.*\.(png|jpg)$" NO_CACHE # 针对标记的请求覆盖缓存头 Header always set Cache-Control "no-cache, no-store, must-revalidate, max-age=0" env=NO_CACHE Header always set Expires "Thu, 01 Jan 1970 00:00:00 GMT" env=NO_CACHE Header always set Pragma "no-cache" env=NO_CACHE # 关闭标记请求的自动Expires生成,避免和全局规则冲突 ExpiresActive Off env=NO_CACHE ``` ## 注意事项 - 配置前请确认Apache已开启`mod_expires`和`mod_headers`两个模块,否则规则无法正常生效 - 如果站点部署在域名二级路径下(比如根路径为`https://domain.com/blog/`),需要将`SetEnvIf`规则中的路径前缀调整为实际路径,例如改为`^/blog/IMG/BIG/.*\.(png|jpg)$` - 配置修改后无需重启Apache,.htaccess规则会实时生效,可通过`curl -I 图片URL`或者浏览器开发者工具的网络面板验证响应头是否符合预期 内容的提问来源于stack exchange,提问作者art)
相关产品推荐
相关产品推荐

