2011-12-06 19 views
0

PHPと.htaccessをベースにしたCSSとJSスクリプトにキャッシュバストエンジンを使用しています。私の.htaccessに私は有効期限ヘッダーを使用しながら.htaccessとmod_rewriteの条件

function CreateFileFingerprint($RelativePath) 
{ 
    $PathInfo = pathinfo($RelativePath); 
    return $PathInfo['dirname'].'/'.$PathInfo['filename'].'.'.filemtime(DATA_BASEPATH.$RelativePath).'.'.$PathInfo['extension']; 
} 

FileETag None 
Header Unset ETag 
ExpiresActive On 
ExpiresDefault A2592000 
ExpiresByType application/javascript A31536000 
ExpiresByType text/css A31536000 
ExpiresByType text/javascript A31536000 
<FilesMatch "[^\.php]$"> 
    Header Append Cache-Control "public" 
</FilesMatch> 

そして少しのmod_rewriteのルール:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)\.(\d+)\.(css|js)$ $1.$3 [L] 

その後、私のPHPでそれをPHPで私は、次の機能を内蔵しページ私は次のコードを使用します:

echo '<link rel="stylesheet" href="'.self::CreateFileFingerprint('/styles/style-base.css').'" media="all"/>'; 

すべてうまくいきますが、hereのような私のサイト用の汎用PHP ErrorDocumentを実装したいと思います。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ /errors/error.php [L] 

誰かが私を助けてくださいことができます。問題は、私は、リンクで提案1で私の以前のmod_rewriteルールをマージする必要があるということですか? 多くの感謝!

答えて

0
RewriteCond %{REQUEST_FILENAME} -f 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule . – [S=2] 
RewriteRule ^(.+)\.(\d+)\.(css|js)$ $1.$3 [L] 
RewriteRule ^.*$ /errors/error.php [L] 

条件から否定を取り除き、ファイルまたはディレクトリの場合は再書き込みを試行しないように指示します。それは動作するはずだと思う

+0

これは動作しません。 Apacheは500で終了します。 –