gzip対応ブラウザにはgzipファイルを返却する
久々にどはまりした。
はまったとこ。
1、.gzファイルがあるかどうかは、
RewriteCond %{REQUEST_FILENAME}\.gz -s
じゃなくて
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME}\.gz -s
って書く。
2、contentTypeとかcontentEncodingとか。
正しくなくて表示できなかったり、
ダウンロードファイル扱いされたり、
文字化けっちゃったり。
結果、
#Accept-Encodingがgzipのリクエスト RewriteCond %{HTTP:Accept-Encoding} gzip #リクエストファイル名.gzのファイルが存在し、かつサイズが0より大きい RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME}\.gz -s #*.cssまたは*.jsなら圧縮先ファイルを返却する RewriteRule ^(.+)(\.css|\.js)$ $1$2.gz [L,QSA] <FilesMatch "\.css\.gz$"> ForceType text/css;charset=UTF-8 AddEncoding x-gzip .gz </FilesMatch> <FilesMatch "\.js\.gz$"> ForceType text/javascript;charset=UTF-8 AddEncoding x-gzip .gz </FilesMatch>
こんな感じでうまくいったー。
あらかじめgzipファイルを作らなくても、
apacheでは、mod_deflateモジュールで、
リクエスト時に圧縮ファイルを返却することができるらしいけど、
サーバ側の負荷は少しでも減らしたいので、
こんな感じでやることにするかもー。