如何解决 .htaccess 文件中的“ExpiresActive not allowed here”错误消息?

如何解决 .htaccess 文件中的“ExpiresActive not allowed here”错误消息?

我正在尝试将 Expires 标头添加到我正在处理的站点的 HTTP 响应中。对我来说,控制 Apache 1.3 服务器的唯一方法是编辑我的 .htaccess 文件。我尝试添加如下代码来启用 Expires 标头:

<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 1 hour"
</IfModule>

但是,这会导致内部服务器错误,日志中会出现以下错误消息:

此处不允许 ExpiresActive

由于未启用 mod_headers,我可能无法使用其他缓存控制方法。我是否仍可以通过 .htaccess 文件中的某些命令使用 mod_expires 启用 Expires 标头?

更新
我记得在某处读到过,httpd.conf 中的 Override 设置可能与此有关。有什么方法可以验证这确实是问题所在吗?如果是,是否有某种解决方法来控制我的网站的缓存标头?

答案1

一般来说,处理此类问题最简单的方法是参考手册。

http://httpd.apache.org/docs/1.3/mod/mod_expires.html#expiresactive

Syntax:      ExpiresActive On|Off
Context:     server config, virtual host, directory, .htaccess
Override:    Indexes
Status:      Extension
Module:      mod_expires

值得关注的两个字段是 Context 和 Override。我们可以看到,只要您允许覆盖索引,就可以在 .htaccess 文件中使用 ExpiresActive

更新:

为了满足您对过期标头的需求。请查看https://stackoverflow.com/questions/1036941/setup-expires-headers-php-apache

希望这可以帮助:)

答案2

在我使用 htaccess 的文件夹的 Apache conf 中添加“AllowOverride Indexes”后,这个方法就奏效了。在这里找到了解决方案http://speedforce.org/2009/01/we-back/

答案3

在 RHEL 中的 /etc/httpd/conf/httpd.conf

更改 AllowOverride None

允许覆盖 FileInfo 选项索引

答案4

我在 Apache 2.4 / CentOS 7 上遇到了同样的问题。配置文件的语法现在是:“AllowOverride Options=Indexes”

<Directory /var/www/html/>
  Options Indexes FollowSymlinks
  AllowOverride Options=Indexes
</Directory>

相关内容