it-swarm.com.de

So legen Sie den Inhaltstyp für SVG-Dateien fest, die von PHP analysiert werden

Ich verwende derzeit den folgenden Apache httpd conf:

<FilesMatch "\.svg$">
  SetHandler application/x-httpd-php
</FilesMatch>
AddType image/svg+xml .svg

Was ich versuche zu erreichen:

  • Analysieren der Skripte PHP in meinen SVG-Dateien
  • Bereitstellen meiner SVG-Dateien mit dem MIME-Typ image/svg+xml

Das AddType scheint jedoch ignoriert zu werden, da ich es so eingestellt habe, dass es den alternativen Handler für meine SVG-Dateien verwendet. Sie werden jetzt als text/html serviert.

Wie kann ich das httpd veranlassen, das PHP in meinen SVG-Dateien zu analysieren, während der image/svg+xml -Typ beibehalten wird?

Ich füge derzeit einen header("Content-type: image/svg+xml"); -Aufruf in meine SVG-Datei ein, um dieses Problem zu lösen, obwohl ich lieber eine globale Methode verwenden möchte, anstatt dies in alle meine SVG-Dateien einfügen zu müssen.

  • CentOS 6.5
  • Apache 2.2.15
  • PHP 5.3.3
3
Patrickdev

Am Ende habe ich den Handler für SVG-Dateien auf application/x-httpd-php gesetzt und mit dem mod_headers von Apache den richtigen Header für den Inhaltstyp übergeben.

<Files "*.svg">
  SetHandler application/x-httpd-php
  Header set Content-Type "image/svg+xml"
</Files>

Dies wurde behoben, als ich unter https://serverfault.com/questions/348439/how-to-fix-Apache-content-type-for-php-parsed-css eine fast identische Frage fand.

5
Patrickdev

Die Apache mod_mime Dokumentation besagt, dass SetHandlerAddType überschreibt:

Während mod_mime Metadaten mit Dateinamenerweiterungen verknüpft, stellt der Hauptserver Anweisungen bereit, mit denen alle Dateien in einem bestimmten Container (z. B. <Location>, <Directory> oder <Files>) bestimmten Metadaten zugeordnet werden . Diese Anweisungen umfassen ForceType, SetHandler, SetInputFilter und SetOutputFilter. Die Kernanweisungen überschreiben alle in mod_mime definierten Zuordnungen von Dateinamenerweiterungen.

Sie sollten in der Lage sein, die Header-Direktive von mod_headers in .htaccess zu verwenden, damit es funktioniert:

<FilesMatch "\.svg$">
    SetHandler application/x-httpd-php
    Header set Content-Type "image/svg+xml"
</FilesMatch>
1