FilesMatch导致内部服务器错误

时间:2011-06-28 12:34:37

标签: .htaccess caching error-handling

我将以下代码添加到 .htaccess 文件中,以启用3天的缓存文件。之后我的网站不再可用了,我收到一条消息,告诉我这是内部服务器错误

代码:

 # 3 DAYS 
    <FilesMatch "\.(html|css|js|gif|jpg|jpeg|png|ico|swf)$"> Header set Cache-Control "max-age=259200, proxy-revalidate" </FilesMatch>

消息:

  

内部服务器错误

     

服务器遇到内部问题   错误或错误配置,是   无法完成您的请求。

     

请与服务器联系   管理员,webmaster @ exampple.com   并告知他们错误的时间   发生了,你可能有任何东西   完成可能导致错误。

     

有关此错误的详细信息可能有效   在服务器错误日志中可用。

FilesMatch有什么问题或者还有什么可能导致内部服务器错误? 感谢

5 个答案:

答案 0 :(得分:9)

我刚才有这个问题,您可以通过输入来解决 命令行中的“sudo a2enmod headers”

答案 1 :(得分:8)

这是另一种解决方案 http://diogomelo.net/node/24

要启用此模块,请以root身份登录,并创建从mods-available / headers.load到mods-enabled的符号链接。之后,重新加载apache并完成。为此,我使用了这个命令。

su -
cd /etc/apache2/mods-enabled/
ln -s ../mods-available/headers.load headers.load
sh /etc/init.d/apache2 force-reload

在该程序之后问题得以解决。

答案 2 :(得分:5)

必须在多行上,而不是全部在一行中。这个适用于我:

<FilesMatch "\.(html|css|js|gif|jpg|jpeg|png|ico|swf)$">
    Header set Cache-Control "max-age=259200, proxy-revalidate"
</FilesMatch>   

答案 3 :(得分:0)

这是另一种可能的解决方案,在应用多行之后,执行此简单的可能解决方案。

问题:

您可能直接从网站,幻灯片演示或其他地方的示例代码中复制并粘贴了htaccess指令,这会导致文本编码格式出现问题。

解决方案:

再次复制代码,但这一次将其粘贴到简单的记事本或文本编辑器中,然后再次将其复制并粘贴到ataccess文件中。这样可以消除任何编码问题。

答案 4 :(得分:0)

返回错误 500 的另一个问题是您没有在 Apache conf 文件中正确启用 AllowOverride 指令。

示例:

<VirtualHost *:80>
        ServerName yoursitename
        DocumentRoot /var/www/html/site
        <Directory /var/www/html/site>
                Options -Indexes +FollowSymLinks +MultiViews
                Require all granted
                AllowOverride None
        </Directory>

        ErrorLog /var/log/apache2/error_site.log

在该示例中,有一个 AllowOverride none 可以阻止您可以进行的所有 .htaccess 修改。

您可以删除 AllowOverride None 或修改它,只允许您需要的指令。在您使用 AllowOverride FileInfo 放置的示例中就可以了。

有关 AllowOverride 指令的更多信息,请访问:https://httpd.apache.org/docs/2.4/es/mod/core.html#allowoverride