我正在尝试将Expires标头添加到正在处理的网站的HTTP响应中。 我控制Apache 1.3服务器的唯一方法是编辑我的.htaccess文件。 我试着添加如下的代码来启用Expires头文件:
<IfModule mod_expires.c> ExpiresActive on ExpiresDefault "access plus 1 hour" </IfModule>
但是,这会导致内部服务器错误,并在日志中显示以下错误消息:
ExpiresActive不允许在这里
我可能不能使用caching控制的替代方法,因为mod_headers没有启用。 有没有什么办法,我仍然可以通过在.htaccess文件中的一些命令使用mod_expires启用过期头文件?
更新
我记得在某处读到httpd.conf中的Override设置可能与它有关。 有什么办法来validation这确实是问题吗? 如果是的话,是否有一些解决方法来控制我的网站的caching头?
总的来说,处理这类问题最简单的方法是指手册。
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
它的两个领域的上下文和覆盖。 正如我们可以看到,只要您允许使用索引,就可以在.htaccess文件中使用ExpiresActive
更新:
解决您需要过期的标题。 退房https://stackoverflow.com/questions/1036941/setup-expires-headers-php-apache
希望这可以帮助:)
添加“AllowOverride索引”到Apache的conf文件夹,你有htaccess为我工作。 在这里find解决schemehttp://speedforce.org/2009/01/were-back/
在/etc/httpd/conf/httpd.conf中的RHEL上
更改AllowOverride无
AllowOverride FileInfo选项索引
在我的情况下,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>
我在Apache 2.4 / CentOS 7上遇到同样的问题。configuration文件的语法现在是:“AllowOverride Options = Indexes”
<Directory /var/www/html/> Options Indexes FollowSymlinks AllowOverride Options=Indexes </Directory>