在Apache config中有条件地设置到期标头

问题描述

| 我想在图像上有条件地设置到期标头,这样它们在项目开发时就不会缓存,而在生产中时会缓存。理想情况下,这只是对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
这就要求您具有一个先前根据您的模式初始化的布尔环境env 4。在我们的案例中,我们决定是否要使用主机名(devel.domain.com与www.domain.com)。     ,        从alienhard所说的开始,我设法想出了解决我的问题的方法。
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+)
的图像文件夹)
rewriterule
E
标志可让您在规则匹配的情况下设置环境变量。
-
实际上没有重写任何内容。因此,这将使用
rewritecond
检查脚本的输出,并从
rewriterule
发送项目编号,然后在两个条件都匹配的情况下设置环境变量。然后根据该环境变量的存在条件有条件地设置
header
。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...