.htaccess缓存控制标题导致500服务器错误

时间:2012-10-16 16:06:51

标签: .htaccess http-headers cache-control

我正在尝试学习如何使用.htaccess来操纵我的标题,用谷歌的话说,“利用浏览器缓存”来改善页面加载时间。我试验过的代码就是:

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
<FilesMatch "\.(js|css)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
<FilesMatch "\.(html|php)$">
Header set Cache-Control "max-age=14400, public"
</FilesMatch>

由于某种原因,这导致整个网站抛出500错误。如果它有任何区别,我在.htaccess文件中很早就插入了这段代码,之前需要某些子域的密码和301 RewriteEngine重定向的长列表的验证逻辑,因为这个网站最近重新组织了很多网址已更改。

你知道为什么这会导致错误吗?我或多或少地从博客中复制了代码并对其进行了编辑以满足我的需求。更新.htaccess文件后,500错误也不会立即出现,这对我来说意味着错误是在Apache服务器的默认四小时缓存到期标题失效后开始的。

编辑10-17-2012:

现在尝试添加和删除此代码几次,我已经确认标题可以正常工作,尽管很简单。使用带有PageSpeed的FireBug,我可以看到max-age设置正确地应用于文件。过了一会儿,正如我之前提到的那样,网站一直在变为全部500。

另一件值得注意的事情是:我实际上是尝试在密码保护的测试子域上测试新标头,然后再将其推出到主站点。据我所知,由于某些原因,在更新了SUBDOMAIN上的.htaccess(甚至用完了自己的文件夹,与/ public_html /分开)后,MAIN(www)网站会中断。

当我认为我正在更新测试子域时,我可能做错了什么,或者意外地上传到主站点,但是我正在变得犹豫,因此在主站点上冒更多的停机时间。

3 个答案:

答案 0 :(得分:0)

确保http.conf文件中的配置条目允许您在.htaccess文件中添加这些条目。测试的一个好方法是将此部分移动到apache配置,看看它是否仍然失败。

如果没有失败,请确保override all申请您正在修改的目录。

答案 1 :(得分:0)

我的500错误可能与缓存代码无关,但与我的网站的控制面板无关。显然,只是不小心点击其内置的.htaccess编辑器菜单会导致它编辑我自己的手工编码文件并将线条随机播放到IT部门希望看到它们与自己的工具一起使用的订单。这会在有或没有Cache-Control行的情况下破坏站点。

我会再次尝试测试一下,如果一切顺利,这个问题就会解决。

答案 2 :(得分:0)

您需要在apache中启用mod_headers模块。

sudo a2enmod headers