在请求gzip压缩资源文件时检索错误404

时间:2012-02-10 11:24:29

标签: apache .htaccess

我使用gzip压缩了JavaScript和CSS文件。在使用gzip cmd压缩之前,JS文件已经缩小。

现在,如果浏览器兼容,我需要告诉apache提供这些文件的gzip压缩版本。为此,我在htaccess中添加了几行代码:

AddType "text/javascript" .gz
AddType "text/css" .gz
AddEncoding gzip .gz

RewriteCond %{REQUEST_FILENAME} \.(js|css)$
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ /$1.gz [QSA,L]

<FilesMatch .*\.js.gz$>
ForceType text/javascript
Header set Content-Encoding: gzip
</FilesMatch>
<FilesMatch .*\.css.gz$>
ForceType text/css
Header set Content-Encoding: gzip
</FilesMatch>

public_html中文件的目录结构如下:

css/style.css
css/style.css.gz
js/customjsfn.min.js
js/customjsfn.min.js.gz
js/jquery.js
js/jquery.js.gz

在标题中我已经包含了css&amp;像这样的js文件:

<link rel="stylesheet" href="http://example.com/css/style.css" />  
<script type="text/javascript" src="http://example.com/js/customjsfn.min.js"></script>
<script type="text/javascript" src="http://example.com/js/jquery.min.js"></script>

样式未正确应用。当我使用firebug检查响应代码时,它为我的文件返回404。

我哪里出错了?

2 个答案:

答案 0 :(得分:2)

这不足以满足要求吗?

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/xml application/xml text/css text/plain text/javascript application/x-javascript application/json
</IfModule>

答案 1 :(得分:1)

没关系,你这样做是完全错误的。 (我认为,除非这实际上是一种合法的方式)。

您不应该创建gzipped备用资产。 Web服务器(apache)会自动为您压缩它们。您无需将用户重定向到gzip压缩资源。

只需添加deflate模块,如Rodneyrehm所说,它将处理其余部分。这可能是你得到404错误的原因。不要创建javascript.js.gz文件。

见:

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html