Получение ошибки 404 при запросе gzip-файлов ресурсов - PullRequest
1 голос
/ 10 февраля 2012

Я сжал файлы JavaScript и CSS, используя gzip. Файлы JS уже уменьшены, прежде чем они сжаты с помощью gzip cmd.

Теперь мне нужно указать 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 & 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 ]

2 голосов
/ 10 февраля 2012

Разве этого не достаточно?

<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 голос
/ 10 февраля 2012

Не берите в голову, что вы делаете это совершенно неправильно.(Я думаю, если только это не является законным способом сделать это).

Вы не должны создавать альтернативные активы в формате gzip.Веб-сервер (apache) сожмет их для вас автоматически.Вам не нужно перенаправлять пользователя в распакованные ресурсы.

Просто добавьте модуль дефляции, как сказал Роднейрем, и он обработает все остальное.Вероятно, поэтому вы получаете ошибку 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...