2011-01-03 8 views
0

で私が持っている:は、Apache私の.htaccessファイルで使用中のmod_rewriteとFilesMatch

<FilesMatch "\.(js|css|png|gif|jpg)$"> 
<IfModule mod_headers.c> 
Header set Cache-Control "public, max-age=31536000" 
Header set Expires "A31536000" 
</IfModule> 
</FilesMatch> 

は私も/forum-js/forum.jsのためのリライトを持っている - >/wp-content/plugins/forum/js/forum.js.php、これは上記の正規表現と一致する必要がありますファイルのみです。何らかの理由で、その正規表現に一致する他のすべてのリソースは、Cache-ControlExpiresを含むヘッダを持っていますが、これは含まれていません。それは書き直されたURLなのですか?

+0

どのような書き換えをお持ちですか?本当の名前は何ですか? –

+0

'Expires:pA31536000'は無効です。 [Expires](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21)これは[mod_expires](http://httpd.apache.org/docs/)と同じではありません。 2.2/mod/mod_expires.html)。 – Gumbo

答えて

3

書き換えられたURLなのですか?

あなたのコメントによれば、その実際の拡張子は.phpであり、その拡張子に関連付けられたルールが有効です。

最も簡単な方法は、PHPスクリプト内からヘッダを送信するには、次のようになります。

<? header("Cache-Control: public, max-age=31536000"); 
    header("Expires : pA31536000"); 
+0

この問題の1つの問題は、私は実際にスクリプトを変更できないことです。質問でこれを指定したはずですが、WordPressを実行しています。このプラグインを更新すると、追加するコードは上書きされます。更新は数ヶ月後になる可能性があります。その場合、コードの場所と追加するコードを忘れてしまい、最終的には複雑すぎて保守が難しくなります。 .htaccessでこれらのヘッダーを追加できる方法はありますか? を使用する必要がありますか? – skeggse

+1

@CMC yup、私は 'FilesMatch'が最良の選択だと思います。 –

+0

ありがとうございました! – skeggse

2

あなたはまた、代わりにmod_expiresを使用することもできます。

<IfModule mod_expires.c> 
    <FilesMatch "\.(js|css|png|gif|jpg)$"> 
     ExpiresDefault A31536000 
    </FilesMatch> 
</IfModule> 

をまた代わりに、ファイルのMIMEメディアタイプで動作します名前の拡張子:

<IfModule mod_expires.c> 
    ExpiresByType application/javascript A31536000 
    ExpiresByType text/css A31536000 
    ExpiresByType image/png A31536000 
    ExpiresByType image/gif A31536000 
    ExpiresByType image/jpeg A31536000 
</IfModule> 
関連する問題