如何在.htaccess文件中禁用某些媒体文件的Apache gzip压缩?

Sk8*_*ter 17 apache .htaccess mod-rewrite drupal apache2

我想对已经通过该.htaccess文件在Apache服务器上压缩的一些媒体文件禁用gzip压缩.
原因:因为它写在例如jPlayer的网站上,应该禁用媒体文件的gzip编码:"媒体文件已经被压缩,GZIP只会在你的服务器上浪费CPU.如果你GZIP媒体,Adobe Flash插件会遇到问题."

我目前遇到的问题Content-Length是,当启用gzip时未正确设置标头 - 所以当使用SoundManager2播放器播放一些mp3文件时,音轨的长度进度条不能正常工作(所以也许这就是他们讲述的问题jPlayer的网站).

我可以测试是否在这里为gzip提供内容.
我有mod_deflate,mod_mime并且mod_rewrite在服务器上启用了模块.
根据phpinfo(),这里是所有已加载模块的列表:

core mod_log_config mod_logio itk http_core mod_so mod_alias mod_auth_basic mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dav mod_dav_svn mod_authz_svn mod_deflate mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_rewrite mod_setenvif mod_ssl mod_status
Run Code Online (Sandbox Code Playgroud)

我正在使用Drupal 6,所以我已经有了一个RewriteRule,它是以下内容:

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这些来禁用gzip,但是它们没有用(有6种不同的尝试! - 也许其中一些必须在Apache的httpd.conf中全局设置?!):

  • # http://www.cyberciti.biz/tips/speed-up-apache-20-web-access-or-downloads-with-mod_deflate.html
    SetOutputFilter DEFLATE
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary    
    
    Run Code Online (Sandbox Code Playgroud)
  • ## Step 2. here: http://www.mydigitallife.info/how-to-enable-mod_deflate-gzip-compression-on-cpanel-web-hosts/
    <IfModule mod_deflate.c>
    SetOutputFilter DEFLATE
    
    RemoveOutputFilter mp3
    # Don’t compress already-compressed files
    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI .(?:avi|mov|mp3|mp4|rm|flv|swf|mp?g)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI .pdf$ no-gzip dont-vary
    </IfModule>
    
    Run Code Online (Sandbox Code Playgroud)
  • RemoveOutputFilter mp3
    
    Run Code Online (Sandbox Code Playgroud)
  • # for files that end with ".mp3"
    <FilesMatch \.mp3$>
    SetEnv no-gzip 1
    </FilesMatch>
    
    Run Code Online (Sandbox Code Playgroud)
  • RewriteRule \.mp3$ - [NS,E=no-gzip:1,E=dont-vary:1]
    
    Run Code Online (Sandbox Code Playgroud)
  • RewriteRule ^((.*)\.mp3)$ $1.mp3 [NS,E=no-gzip:1,E=dont-vary:1]   
    
    Run Code Online (Sandbox Code Playgroud)

唯一一个正常工作,并禁用gzip压缩,但它是全局的:

不使用此RewriteRule时mp3文件的 响应标头:http://pastebin.com/AkUZ6m5Y使用此RewriteRule时mp3文件的
响应标头:http://pastebin.com/b8j3NF6D

小智 8

我必须禁用odp文件的压缩以供外部插件使用.在.htaccess文件中添加了以下规则

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.odp$ no-gzip dont-vary
Run Code Online (Sandbox Code Playgroud)

并且服务器禁用了odp文件的压缩 确保在测试之前清除浏览器缓存


Jav*_*nzo 0

我认为您没有在媒体中使用压缩。您是否检查过您实际上正在压缩文件?该模块可以加载到内存中,但这并不意味着它会压缩文件。如果您的 .htaccess 仅具有重写规则,那么您可能没有压缩任何类型的内容。