2016-06-17 10 views
0

Ich habe eine statische Webseite und möchte die Ladegeschwindigkeit verbessern, indem ich gzip-Versionen aller verfügbaren Dateien zur Verfügung stelle. Die Seite läuft auf einem Apache-Server mod_gzip und ich kann keine Konfiguration außer der .htaccess-Datei ändern. So erstelle ich Gzip-Dateien während des Build-Prozesses und möchte die eingehenden Anfragen in die .gz-Dateien umschreiben.Verhindern, dass Apache beim Umschreiben den Inhaltstyp ändert

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/
    ReWriteCond %{HTTP:accept-encoding} gzip 
    ReWriteCond %{REQUEST_FILENAME} !.+\.gz$ 
    RewriteCond %{REQUEST_FILENAME}.gz -f 
    RewriteRule (.+) $1.gz [L] 
</IfModule> 

Das Umschreiben funktioniert perfekt, aber unfotunately der Server ändert sich auch die Content-Type der Antwort auf application/x-gzip, die den Browser Herunterladen der Datei macht und machen es nicht. Gibt es eine Möglichkeit, zu verhindern, dass der Apache-Server den Inhaltstyp ändert und die Seite rendert, anstatt die gz herunterzuladen?

+0

Für welche Dateien haben Sie eine gz-Version? html, css, js? – slapyo

+0

Ja, html, css und js. Aber auch Schriftdateien (eot, ttf, woff ...) – andipaetzold

Antwort

0

Dies erfordert, dass Sie 2 Versionen der Datei im folgenden Format haben. Zum Beispiel:

index.html 
index.html.gz 

styles.css 
styles.css.gz 

scripts.js 
scripts.js.gz 

Diese .htaccess wird die Anfrage neu schreiben die gz-Version an den Browser, sondern auch pflegen die Art der ursprünglichen Datei zu senden. Sie müssen den Typ der Datei erzwingen, die Sie senden möchten. Andernfalls wird die application/x-gzip verwendet und der Browser wird die Datei herunterladen.

<IfModule mod_deflate.c> 
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/json application/javascript application/vnd.ms-fontobject application/font-ttf application/font-woff application/font-otf image/svg+xml 
</IfModule> 

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTP:Accept-Encoding} gzip 
    RewriteCond %{REQUEST_FILENAME}.gz -f 
    RewriteRule (.*\.(html|css|js|eot|ttf|woff|otf|svg))$ $1.gz [L] 
</IfModule> 

AddEncoding x-gzip .gz 

<FilesMatch .*\.html.gz> 
    ForceType text/html 
</FilesMatch> 

<FilesMatch .*\.css.gz> 
    ForceType text/css 
</FilesMatch> 

<FilesMatch .*\.js.gz> 
    ForceType application/javascript 
</FilesMatch> 

<FilesMatch .*\.eot.gz> 
    ForceType application/vnd.ms-fontobject 
</FilesMatch> 

<FilesMatch .*\.ttf.gz> 
    ForceType application/font-ttf 
</FilesMatch> 

<FilesMatch .*\.woff.gz> 
    ForceType application/font-woff 
</FilesMatch> 

<FilesMatch .*\.otf.gz> 
    ForceType application/font-otf 
</FilesMatch> 

<FilesMatch .*\.svg.gz> 
    ForceType image/svg+xml 
</FilesMatch> 
+0

Arbeitete für mich - danke! – andipaetzold

Verwandte Themen