![如何解决 .htaccess 文件中的“ExpiresActive not allowed here”错误消息?](https://linux22.com/image/496134/%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%20.htaccess%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E2%80%9CExpiresActive%20not%20allowed%20here%E2%80%9D%E9%94%99%E8%AF%AF%E6%B6%88%E6%81%AF%EF%BC%9F.png)
我正在尝试将 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>