【问题标题】:FilesMatch results in Internal Server ErrorFilesMatch 导致内部服务器错误
【发布时间】:2021-07-21 16:15:04
【问题描述】:

我将以下代码添加到我的 .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@example.com 并告知他们错误发生的时间 发生了,以及你可能有的任何事情 这样做可能会导致错误。

有关此错误的更多信息可能会 在服务器错误日志中可用。

FilesMatch 有什么问题或其他可能导致内部服务器错误的原因? 谢谢

【问题讨论】:

    标签: .htaccess caching error-handling


    【解决方案1】:

    我之前遇到过这个问题,你可以通过输入来解决 命令行中的“sudo a2enmod headers”

    【讨论】:

    • 这是我问题的完美答案,谢谢@thomas
    • 在那之后,你需要运行service apache2 restart,但是Apache会在你启用headers mod后告诉你这个。
    • 这是我需要知道的。我一直收到 500 内部错误。一旦我启用了标题,我的 htaccess 更新就像一个魅力。
    【解决方案2】:

    这是另一种解决方案 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
    

    在该过程之后,问题就解决了。

    【讨论】:

    • 谢谢!这是单行版本sudo ln -s /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load
    【解决方案3】:

    它必须在多行上,而不是全部在一行中。这个对我来说很好用:

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

    【讨论】:

    • 它正在工作!谢谢你。 BTW:是否建议将
    • 我总是把它放在上面——我从来没有故意这样想过。
    • 在我知道 .htaccess 之前,我在我的 .html 网站元设置中使用了它:&lt;meta http-equiv="cache-control" content="cache"/&gt; &lt;meta http-equiv="pragma" content="cache"/&gt; 我现在应该删除它还是保持原样?
    • 我会说“是 - 删除”(因为您已经有 Apache 明确设置的标头).. 但我不能保证 100%,抱歉
    • 听起来合乎逻辑。最后一个简短的问题:我的服务器根 .htaccess 文件中的 FilesMatch 是否也会影响子域,还是需要单独的子域? (对不起,我今天非常渴望信息......)
    【解决方案4】:

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

    问题:

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

    解决方案:

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

    【讨论】:

      【解决方案5】:

      您可能遇到的另一个问题会返回错误 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-26
        • 2015-11-23
        • 2013-08-11
        • 2012-03-29
        • 2014-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多