Apache在特定文件上没有caching

我有一个应用程序有以下重写规则:

RewriteCond /tmp/maintenance.html -f RewriteCond %{HTTP_HOST} !^backdoor.myapp.com$ RewriteRule ^(.*)$ /tmp/maintenance.html [L] 

这是我们的“维修模式”。 所以我通过将/tmp/maintenance.html链接到一个真实的文件(并使用backdoor.myapp.com保留后门访问)来启用维护。

问题是,这个页面似乎被caching的浏览器,所以当closures维护,用户必须做一个硬刷新,以回到主应用程序。

我想知道如何只能在Apache2中为这个特定的文件设置头文件。 我相信有no-cache头? 我假设我想为这个文件设置这个头文件,所有的都应该是好的。

有人可以指导我如何做到这一点,或解释这个静态文件不应该caching在用户的浏览器的机制?

 <Directory /some/real/path/to/tmp> Header Set Pragma "no-cache" Header Set Expires "Thu, 1 Jan 1970 00:00:00 GMT" Header Set Cache-Control "max-age=0, no-store, no-cache, must-revalidate" Header Unset ETag FileETag None </Directory> 

这应该为每个浏览器都做。

为了更好地控制从caching中排除的文件的粒度,可以使用“FilesMatch”指令。

另外,确保在服务器上加载mod_headers和mod_rewrite。 如果您不确定,请将标题指令放在“ifModule”部分中:

 <FilesMatch "^(excludeme-1|excludeme-2)\.jar$"> FileEtag None <ifModule mod_headers.c> Header Unset ETag Header Set Cache-Control "max-age=0, no-store, no-cache, must-revalidate" Header Set Pragma "no-cache" Header Set Expires "Thu, 1 Jan 1970 00:00:00 GMT" </ifModule> </FilesMatch>