5

最后httpd.conf几行是:

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

当我运行 YSlow 时,它说我所有的 CSS 文件(和其他文件)都没有设置过期时间。CSS 文件位于子目录中,但我相信"\."无论子目录如何,都应该匹配所有文件。

Apache 是为虚拟主机设置的,但上述指令不在httpd.conf.

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

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

4

1 回答 1

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>

这里有几件事可以尝试:

1) 确保 mod_expires.so 是您认为的位置。您可以通过在终端中使用它来查看包含哪些模块:apache2 -M.

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

3) 确保LoadModule指令在您的 httpd.conf 文件中

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

于 2012-06-01T06:49:24.043 回答