Fra*_*ier 4 mod-rewrite apache-2.2
我有一个 Apache vhost,它对请求的 URL 执行许多重写操作(使用 mod_rewrite)。其中一些 RewriteRule 调用将浏览器重定向到其他主机(使用 301 和 302 重定向)。
我在该 vhost 文件中设置了 1 秒的默认到期时间:
ExpiresActive On
ExpiresDefault "access plus 1 second"
Run Code Online (Sandbox Code Playgroud)
因此,所有重定向都包含此标头:
Cache-Control: max-age=1
Run Code Online (Sandbox Code Playgroud)
现在我要做的是在一个特定重定向的情况下输出一个不同的缓存头。我希望大多数重定向(302)继续有 1 秒的到期时间,但对于其中一个(301),我想改用 1 天的到期时间。
这是可行的吗?
有一种方法可以做到这一点,但不能使用 mod_expires。相反,您必须使用 mod_rewrite 设置环境变量,然后使用 mod_headers 有条件地添加正确的缓存标头,如Mark S. Kolich:使用 mod_rewrite 在重定向上设置缓存控制和过期标头中所述。
所以我的最终解决方案是这样的:
RewriteRule ... [last,redirect=301,env=longexpiry:1]
RewriteRule ... [last,redirect=302,env=nocache:1]
Header always set Cache-Control "no-store, no-cache, must-revalidate" env=nocache
Header always set Cache-Control "max-age=86400" env=longexpiry
Run Code Online (Sandbox Code Playgroud)
确保您没有由 mod_expires 设置默认到期时间,否则您最终会得到重复的标题。
归档时间: |
|
查看次数: |
11199 次 |
最近记录: |