我们一直在尝试将我们的服务器配置为不缓存我们的.htm文件,因为它会导致我们的分析包出现一些问题,并且如果访问者点击浏览器中的后退按钮,则无法正确显示页面.
我们试图通过添加以下内容来解决它:
<FilesMatch "\.(htm)$">
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
Header set Warning "Testing"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)
到我们的httd文件,但它似乎没有执行,但是,当我们移动文件管理器之外的标头集时,它似乎执行正常..
任何人都有任何想法我们出错了吗?
Joh*_*ell 14
我最近需要弄清楚同样的问题,虽然这篇文章指出了我正确的方向,但我想分享一些澄清信息,以便对将来搜索这个主题的人进行启发.
David,您的初始FilesMatch无法正常工作,因为FilesMatch仅适用于文件系统上存在的真实物理文件.http://httpd.apache.org/docs/current/sections.html将其声明为:
该目录和文件的指示,用自己的正则表达式同行一起,应用指令到文件系统的部分.
这也是您使用LocationMatch的第二篇帖子解决了这个问题的原因.同样来自http://httpd.apache.org/docs/current/sections.html,它声明:
该位置指令和其对应的正则表达式,而另一方面,改变在网络空间内容的设置.<SNIP>该指令不需要与文件系统有任何关系.例如,以下示例显示如何将特定URL映射到mod_status提供的内部Apache HTTP Server处理程序.文件系统中不需要存在称为服务器状态的文件.
<Location /server-status>
SetHandler server-status
</Location>
Run Code Online (Sandbox Code Playgroud)
在Apache的文档总结了下面的语句此行为:
使用"位置"将指令应用于文件系统之外的内容.对于存在于文件系统中的内容,请使用目录和文件.<Location />是一个例外,它是将配置应用于整个服务器的简便方法.
对于那些想要了解更多机制的人来说,这就是我对内部结构的理解:
在Apache的文档总结了这一行为:
什么用的时候
在文件系统容器和webspace容器之间进行选择实际上非常简单.将指令应用于驻留在文件系统中的对象时,始终使用目录或文件.将指令应用于不驻留在文件系统中的对象(例如从数据库生成的网页)时,请使用Location.
[重要!]在尝试限制对文件系统中对象的访问时,永远不要使用Location.这是因为许多不同的网站空间位置(URL)可以映射到相同的文件系统位置,从而可以规避您的限制.
此问题现已解决.
为了使它工作,我们已经从使用FilesMatch改为LocationMatch现在,现在标题设置完美.
我们认为这是因为页面正在从JSP页面重定向到HTML页面.
<LocationMatch "\.(htm|html)$">
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
Header set Warning "Testing"
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)
希望其他人会觉得这很有帮助.
| 归档时间: |
|
| 查看次数: |
10055 次 |
| 最近记录: |