mod 重写 - 有条件地设置在 Apache 配置中过期标头



我想有条件地在图像上设置过期标头,以便它们不会在项目开发时缓存,而是在生产中缓存。 理想情况下,这只是对 apache conf 文件的修改。 我有一个perl脚本,它将返回项目的状态,可以与mod_rewrite一起使用,如下所示:

rewritemap  PSTAT prg:/bin/pstat.pl
...skipping...
rewritecond ${PSTAT:$site:$1} =devel
rewriterule ^/run/$site/p(d+)/(w+) /logout.pl/$2 [NS,L]

如果我能做这样的事情就好了:

rewritecond ${PSTAT:$site:$1} =devel
ExpiresByType image/jpg "now plus 1 second"

虽然这当然行不通。

有什么解决办法吗?

对我有用的一个技巧是首先无条件地设置标题:

ExpiresByType image/jpg "now plus 1 second"
...

然后取消设置标头,以防我们处于开发模式:

Header set Cache-control "no-cache" env=devel
Header unset expires env=devel

这要求您事先根据模式初始化布尔环境devel。在我们的例子中,我们决定是否要开发主机名(devel.domain.com 与 www.domain.com(。

从异形哈德所说的开始,我设法想出了我问题的答案。

rewritemap  PSTAT prg:/bin/pstat.pl
...skipping...
rewritecond ${PSTAT:$site:$1} =devel
rewriterule ^/images/(d+)/(w+) - [E=devel:1]
header set cache-control "no-cache" env=devel
header unset expires env=devel

(/images/(d+)是特定项目编号的图像文件夹(d+)(

rewriteruleE 标志允许您在规则匹配的情况下设置环境变量。 -实际上并没有重写任何东西。 因此,这会使用rewritecondrewriterule发送项目编号来检查脚本的输出,然后在两个条件匹配的情况下设置环境变量。 然后header根据该环境变量的存在有条件地进行设置。

相关内容

  • 没有找到相关文章

最新更新