Verhindere mod_deflate bei einer Zip-Datei, die von PHP bedient wird

8

Ich habe einige Probleme, die mod_deflate daran hindern, in dieses Szenario hineinzuspringen:

  1. Benutzer, der CodeIgniter (oder ein anderes Framework, das zu index.php umleitet) ausführt
  2. mod_deflate ist aktiv
  3. ZIP-Datei wird von einem CodeIgniter-Controller (Header + Readfile)
  4. bereitgestellt

Die Sache ist, dass Apache immer den Inhalt als php erkennt und daher etwas wie die Zeilen nicht funktionieren , da der Server die ZIP-Datei als PHP-Datei ansieht.

%Vor%

Irgendwelche Ideen, wie ich Apache von einer HTML-Datei oder einer ZIP-Datei unterscheiden kann, die beide von der gleichen index.php -Rahmendatei erzeugt werden.

Bearbeiten:
Apache-Protokoll

%Vor%

Bearbeiten:
CI-Controller, der die zip

dient %Vor%     
Frankie 20.06.2011, 00:25
quelle

5 Antworten

6

Selbst wenn alle Antworten in einem vernünftigen Szenario perfekt gültig waren (und tatsächlich getestet wurden, bevor die Frage gestellt wurde), ist der Grund, warum ich Apache nicht anweisen konnte, eine Datei nach MIME-Typ zu deflationieren, unbekannt.

Ich konnte es wie gewünscht funktionieren lassen, indem ich folgende Anweisungen in das Skript erzwinge:

%Vor%

Ich verstehe, dass dies ein Hot Patch ist und nicht die Wurzel des Problems anspricht, aber bis jetzt muss das ausreichen. Da es andere gibt, die die gleiche Flagge treffen, bleibt der obige Code hier als Referenz in einer schmutzigen Reparatur.

    
Frankie 22.06.2011, 20:03
quelle
2

Sie können entweder:

  • Verwenden Sie den veralteten AddOutputFilterByType und geben Sie nur die gewünschten Inhaltstypen an filtern; oder
  • Verwenden Sie das leistungsstärkere mod_filter . In FilterProvider können Sie eine Regel angeben, die den Filter beim Zip-Inhaltstyp ausschließt ( application/zip ) wird in den Antwortheadern gefunden.
Artefacto 20.06.2011 00:37
quelle
2

Sie können mod_rewrite verwenden, um den Pantomime-Typ zu ändern die Anfrage auf der Apache-Ebene:

%Vor%

Platziere es über den Regeln des Frameworks, allerdings muss dies dazu führen, dass DEFLATE von MIME-Typ und nicht von Dateierweiterung abhängig ist, wie du es mit <FilesMatch> tust.

Wahrscheinlich funktioniert es gut zusammen mit

%Vor%

anstelle der <FilesMatch> -Richtlinie.

Bearbeiten: Das L-Flag, das im .htaccess-Kontext verwendet werden soll, wurde hinzugefügt und zusätzlich DEFLATE über die Umgebungsvariable no-gzip deaktiviert.

    
hakre 20.06.2011 00:45
quelle
1

Versuchen Sie es (da Ihre URLs in .zip zu enden scheinen, könnte es für Sie funktionieren):

%Vor%     
Femi 20.06.2011 01:35
quelle
0

Anstatt

zu verwenden %Vor%

Verwenden Sie diese Konfiguration zum Festlegen von Komprimierungsregeln.

%Vor%

Auf diese Weise wird Ihre Ausgabe nur komprimiert, wenn der Inhaltstyp mit den obigen Anweisungen übereinstimmt.

Der CI-Controller, der die ZIP-Datei bedient, sendet bereits den richtigen Content-Type-Header, so dass dieser nicht komprimiert wird.

%Vor%     
Sajid Ali 23.07.2012 06:33
quelle

Tags und Links