我以前用过这个;
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "now plus 2 weeks"
// Lots omitted here
</IfModule>
而且这个;
<IfModule mod_headers.c>
<filesMatch "\\.(ico|pdf|flv|jpg|jpeg|png|gif|swf|JPG)$">
Header set Cache-Control "max-age=1209600"
</filesMatch>
// Lots omitted here
</IfModule>
我可以按内容类型设置过期,我可以通过文件扩展名设置任何标题。
但这些似乎都不允许你按内容类型设置任何你想要的标题。
我想根据响应的内容类型设置缓存控制标头 - 请注意,这与文件扩展名不同。我有“友好网址”,因此filesMatch
无法捕获文件扩展名,因此没有文件扩展名,但内容类型为text/html
。
如何为特定内容类型设置缓存控制标头?
答案 0 :(得分:6)
在2.4中,您可以将expr =附加到Header指令而不是env =。
在默认(非早期)模式下,mod_headers作为输出过滤器运行 - 因此内容类型已经设置并且可由表达式解析器使用
答案 1 :(得分:-1)
我想您需要先添加或设置Cache-Control标头。请尝试下面的代码片段,不要忘记“无变换”参数。
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "now plus 2 weeks"
// Lots omitted here
//This is the magic
<IfModule mod_headers.c>
Header append Cache-Control "public, no-transform"
</IfModule>
</IfModule>
答案 2 :(得分:-2)
如果要创建缓存内容类型,可以这样输入:
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType text/html "access plus 15 days"
</IfModule>