我有一个应用程序有以下重写规则:
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>