标头过期无效

Jim*_*Jim 5 header apache2

httpd.conf最后几行是:

ExpiresActive On
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
    ExpiresDefault "access plus 3 days"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

当我运行YSlow时,它表示我的所有CSS文件(和其他文件)都没有设置过期时间.CSS文件在子目录中,但我认为"\."应该匹配所有文件,无论子目录如何.

Apache是​​为虚拟主机设置的,但上面的指令位于最底层的vhosts部分之外httpd.conf.

有一个指令LoadModule expires_module modules/mod_expires.so.conf的文件.

该站点位于运行AWS Linux和Apache2的AWS上.我重新启动了apache,然后检查它是否有效.

pie*_*n72 7

在回答你的问题时,这在我的httpd.conf中对我有用:

LoadModule expires_module /usr/lib/apache2/modules/mod_expires.so
ExpiresActive On

<filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
ExpiresDefault "access plus 3 days"
</filesMatch>
Run Code Online (Sandbox Code Playgroud)

以下是一些尝试:

1)确保mod_expires.so是您认为的位置.您可以在终端中使用此功能查看所包含的模块:apache2 -M.

2)确保您的指令适用于您感兴趣的文件(即不会被.htaccess更远的文件覆盖)

3)确保该LoadModule指令位于httpd.conf文件中

4)在你的FilesMatch正则表达式中,你应该用反斜杠转义点,否则你匹配任何字符.这不是一个大问题,但你最终会将规则应用于非静态页面,例如"site.com/politico"(注意ico结尾).