我正在尝试在某些资源上设置缓存控制标头,其中我们使用查询字符串参数来设置修订代码...例如:/foo/bar/resource1.js?v20140710
这是来自 httpd.conf 文件
#set revision files far future
<LocationMatch "^.*\?v\d{8}$">
Header set Cache-Control "max-age=31535999, public"
</LocationMatch>
这似乎不起作用(未设置缓存控制)。我想知道我是否无法在 LocationMatch 中测试查询字符串?还有其他方法吗?
我看到了使用重写规则的建议...RewriteCond %{QUERY_STRING} "^.*\?v\d{8}$"
但是我不确定如何设置重写规则中的标题?
所以有两个问题...我可以根据查询字符串直接匹配 GET 请求吗(以及如何匹配)?如果不行,还有什么其他方法可以做到这一点?
答案1
我把事情搞得太复杂了……(而且对 Apache conf 表达式有点不了解)。这样就搞定了。
<If "%{QUERY_STRING} =~ /v\d{8}$/">
Header set Cache-Control "max-age=31535999, public"
</If>