.htaccess“标头集”不适用于文本/html

.htaccess“标头集”不适用于文本/html

我有一个包含此文件的文件夹:channel.html

在同一个文件夹中我有这个 .htaccess 文件

<Files channel.html>
ExpiresActive On
ExpiresDefault A31536000
Header set Cache-Control "max-age=31536000"
</Files>

curl-I/channel.html:

HTTP/1.1 200 OK
Date: Wed, 09 Nov 2011 17:27:30 GMT
Server: Apache
Accept-Ranges: bytes
X-Mod-Pagespeed: 0.9.18.7-900
Cache-Control: max-age=0, no-cache, no-store
Vary: Accept-Encoding
Content-Length: 59
Content-Type: text/html

如果我添加ForceType text/plain.htaccess,它可以正常工作,但Content-Type显然是错误的。

我应该怎么做才能修复或调试这个烦恼?

答案1

由于 Expires 标头适用于 text/plain 但不适用于 text/html,您是否尝试过添加ExpiresByType text/html "access plus 1 year"?或者,在配置的其余部分中搜索ExpiresByType text/html其他位置的指令,以覆盖您的默认值?

答案2

您可能有一些东西重置了您的标头。如果这是脚本而不是直接的静态内容,那么您的 Web 应用程序也可能正在设置缓存标头。

另外,我看到您正在使用 mod_page speed。我知道它会尝试进行一些优化,也许它也在为您设置标题。

我会尝试这样做:在 .htaccess 中取消设置 Cache-Control 标头,看看是否仍会收到缓存标头。如果收到,则说明缓存标头已注入到其他地方。

通过改变 mime/type,它表明无论设置什么标题都只是针对 text/html 进行设置,因此它不会触及 text/plain。

答案3

您是否启用了标头重写?如果您发现无效命令“ExpiresActive”,可能是拼写错误或由服务器配置中未包含的模块定义

在 apache2/error.log 中,你可能需要运行 sudo a2enmod headers

按照建议https://stackoverflow.com/questions/8260738/ruby-on-rails-3-1-leverage-browser-caching

相关内容