![是否可以使用 mod-rewrite 向查询字符串添加随机变量?](https://linux22.com/image/506971/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20mod-rewrite%20%E5%90%91%E6%9F%A5%E8%AF%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%B7%BB%E5%8A%A0%E9%9A%8F%E6%9C%BA%E5%8F%98%E9%87%8F%EF%BC%9F.png)
我们在客户端使用的代理方面遇到了一个非常奇怪的问题。
简而言之,他们的代理正在缓存不该缓存的信息。我们在标头中提供了相应信息,告知代理服务器不要缓存,并且是通过 SSL 进行缓存,但这种情况仍然会发生。
我可以通过在 URL 中的查询字符串末尾附加一个随机变量来防止/补救这个问题。
例如:
/information.php 可能会显示缓存信息,而 /information.php?randomvariable=12345 则不会。
是否有一个 mod 重写规则可以适应这种情况?
谢谢!
编辑-
根据 Squillman 的要求,这是我们发送用于缓存的元数据(我说错了,这是元数据,而不是 HTTP 标头信息):
<meta http-equiv="CACHE-CONTROL" CONTENT="NO-CACHE">
<meta http-equiv="PRAGMA" CONTENT="NO-CACHE">
<meta http-equiv="Expires" content="Mon, 26 Jul 1997 05:00:00 GMT"/>
<meta http-equiv="Pragma" content="no-cache" />
希望这有帮助!谢谢。
编辑2-
我在应用程序级别实施了修复。我在每个请求的查询字符串中附加了一个随机变量(seed=random md5)。这很不妥——但确实有效。
一旦我弄清楚了为什么会发生此问题,我就会发布更新。感谢您的回复!
答案1
几个问题:
- 您确定是代理在进行缓存吗?
- 如果是,您做了什么来证实这一点?
- 您知道客户使用什么代理产品吗?
事实上,它通过 SSL 传输意味着代理不应该缓存它,就是这样(抱歉,在我发表评论之前错过了 SSL 部分)。如果它是一款知名的代理产品,那么我更怀疑这真的是客户端行为不当。
我不确定在 mod_rewrite 中是否可以实现。难道你不能直接在 PHP 中生成它吗?
答案2
mod_rewrite 有一个 rnd 的 MapType,它可以做你想做的事情。
看这一页在随机纯文本下。