Apache使用Rails Asset Pipeline生成的资产提供空的gzip

我遵循博文“资产pipe道”中描述的步骤,从开发到生产,并将其调整到我的环境中。 这两个重要的文件是:

/etc/apache/site-available/example.com

<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot "/var/www/sites/example.com/current/public" ErrorLog "/var/log/apache2/example.com-error_log" CustomLog "/var/log/apache2/example.com-access_log" common <Directory "/var/www/sites/example.com/current/public"> Options All AllowOverride All Order allow,deny Allow from all </Directory> <Directory "/var/www/sites/example.com/current/public/assets"> AllowOverride All </Directory> <LocationMatch "^/assets/.*$"> Header unset Last-Modified Header unset ETag FileETag none ExpiresActive On ExpiresDefault "access plus 1 year" </LocationMatch> RewriteEngine On # Remove the www RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] </VirtualHost> 

/var/www/sites/example.com/shared/assets/.htaccess

 RewriteEngine on RewriteCond %{HTTP:Accept-Encoding} \b(x-)?gzip\b RewriteCond %{REQUEST_FILENAME}.gz -s RewriteRule ^(.+) $1.gz [L] <FilesMatch \.css\.gz$> ForceType text/css Header set Content-Encoding gzip </FilesMatch> <FilesMatch \.js\.gz$> ForceType text/javascript Header set Content-Encoding gzip </FilesMatch> 

但Apache似乎发送空的gzip文件,因为testing网站丢失所有样式和萤火虫没有find任何内容的CSS文件。 如果我直接调用资产path,我得到一些看起来像二进制数据的乱码。 如果我移动htaccess文件一切恢复正常。 我怎么能找出哪里/哪里出了问题,或者你有什么build议我犯了什么错误?

 > apache2 -v System: Server version: Apache/2.2.14 (Ubuntu) Server built: Mar 5 2012 16:42:17 > uname -a Linux node0 2.6.18-028stab094.3 #1 SMP Thu Sep 22 12:47:37 MSD 2011 x86_64 GNU/Linux 

更改编码:

 <IfModule mod_mime.c> AddEncoding gzip .gz </IfModule> 

请检查此博客条目以获取更详细的说明。