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

Daa*_*aan 12 cache .htaccess apache-1.3

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

<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 1 hour"
</IfModule>
Run Code Online (Sandbox Code Playgroud)

但是,这会导致内部服务器错误,并在日志中显示以下错误消息:

此处不允许 ExpiresActive

我可能无法使用其他缓存控制方法,因为 mod_headers 未启用。有什么办法我仍然可以通过 .htaccess 文件中的一些命令使用 mod_expires 启用 Expires 标头?

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

Run*_*sen 12

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

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
Run Code Online (Sandbox Code Playgroud)

感兴趣的两个领域是 Context 和 Override。正如我们所看到的,只要您允许覆盖索引,就可以在 .htaccess 文件中使用 ExpiresActive

更新:

满足您对过期标头的需求。查看/sf/ask/72585901/

希望这可以帮助:)


小智 5

将“AllowOverride 索引”添加到 Apache 的 conf 中,以便您在其中拥有 htaccess 的文件夹对我有用。在这里找到解决方案http://speedforce.org/2009/01/were-back/