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 は仮想ホスト用に設定されていますが、上記のディレクティブは の一番下にある vhosts セクションの外にありhttpd.confます。

ファイルにディレクティブ forLoadModule 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 に答える