如何解决.htaccess文件中的“此处未允许ExpiresActive”错误消息?


11

我正在尝试将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设置可能与此有关。有什么方法可以验证这确实是问题所在吗?如果是,是否有一些解决方法可以控制我的网站的缓存标题?

Answers:


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

感兴趣的两个字段是“上下文”和“覆盖”。正如我们看到的,只要您允许AllowOverride Indexes,就可以在.htaccess文件中使用ExpiresActive。

更新:

为了满足您对过期标题的需求。查看/programming/1036941/setup-expires-headers-php-apache

希望这可以帮助:)


感谢您的答复,但正如我的问题已经指出的那样:除通过Web根目录中的.htaccess文件外,我无权访问服务器的配置。因此,如果AllowOverride设置不正确,那我就不走运了。
大安

您应该与您的提供者谈谈。不允许索引只是愚蠢的愚蠢。而且,是的,如果他们无法/不会更改它,那么您对mod_expires的使用感到震惊。
符文·尼尔森

只是为了回应Rune的观点-如果您的服务提供商不会更改其AllowOverride参数,那么您无能为力。
DaveG

3

为您拥有htaccess的文件夹在Apache的conf中添加“ AllowOverride Indexes”对我有用。在此处找到解决方案http://speedforce.org/2009/01/were-back/


1
感谢您的答复,但正如我的问题已经指出的那样:除通过Web根目录中的.htaccess文件外,我无权访问服务器的配置。因此,如果AllowOverride设置不正确,那我就不走运了。
大安

1

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

更改AllowOverride无

允许Override FileInfo选项索引


2
感谢您的答复,但是再次,正如我的问题已经指出的那样:除了通过我的Web根目录中的.htaccess文件之外,我无权访问服务器的配置。因此,如果AllowOverride设置不正确,那我就不走运了。
大安

0

在我的情况下,mod_expires不可用,但是headers_module可以很好地工作(在Apache 2.0上):

# match all these file types, regardless of upper/lowercase
<FilesMatch "\.(?i:jpg|png|gif|js|css)$">
    # 60 seconds * 60 minutes * 24 hours * 7 days
    Header set Cache-Control "max-age=604800, public, must-revalidate"

    # alternative: never expire headers (do look up the caveats)
    # Header set Expires "Thu, 01 Jan 2030 08:08:00 GMT"
    # Header set Cache-Control "public, no-transform"

    # further (debatable) optimizations
    # FileETag None
    # Header unset ETag
    # Header unset Last-Modified
</FilesMatch>

0

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

<Directory /var/www/html/>
  Options Indexes FollowSymlinks
  AllowOverride Options=Indexes
</Directory>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.