设置expires特定URI的标头?

时间:2009-10-21 13:24:49

标签: apache configuration

我正在尝试为特定URI设置expire标头但由于某种原因它无法正常工作,到目前为止我在httpd.conf文件中所做的是以下内容:

<LocationMatch "/mysite/contentservices/weather/get.json">
  ExpiresDefault A86400
</LocationMatch>

<LocationMatch "/mysite/*">
  Options FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  Allow from all
  ExpiresByType text/css "access plus 1 day"
  ExpiresByType text/javascript "access plus 1 day"
  ExpiresByType image/gif "access plus 1 week"
  ExpiresByType image/jpg "access plus 1 week"
  ExpiresByType image/png "access plus 1 week"
  ExpiresByType application/x-shockwave-flash "access plus 1 week"
</LocationMatch>

这对我来说根本不起作用。我没有为我指定的内容提供过期日期标题。当你有两个LocationMatch指令重叠,第一个指令优先时,我也不明白究竟会发生什么?

3 个答案:

答案 0 :(得分:2)

我认为/mysite/contentservices/weather/get.json是一个静态数据文件,不是由CGI / mod_php /其他东西提供的?

配置按照在配置文件中找到它们的顺序应用。

请参阅http://httpd.apache.org/docs/2.0/sections.html

虽然没有其他因素,但参数的不同格式不应成为问题,如果您尝试,可能需要检查会发生什么:

<LocationMatch "/mysite/contentservices/weather/get.json">
  ExpiresDefault "access plus 1 day"
</LocationMatch>

下进行。

答案 1 :(得分:2)

我不确定,但是文档没有提到LocationMatch作为可能的背景。

“上下文:服务器配置,虚拟主机,目录,.htaccess”

http://httpd.apache.org/docs/2.0/mod/mod_expires.html

答案 2 :(得分:0)

尝试切换LocationMatch括号。

或者:某些代理服务器删除expires-header。