現在、次のApache httpd confを使用しています。
<FilesMatch "\.svg$">
SetHandler application/x-httpd-php
</FilesMatch>
AddType image/svg+xml .svg
私が達成しようとしていること:
image/svg+xml
MIMEタイプでSVGファイルを提供するただし、AddType
は、SVGファイルに代替ハンドラーを使用するように設定したため、無視されているようです。それらはtext/html
として提供されるようになりました。
image/svg+xml
タイプを保持しながら、httpdでSVGファイルのPHPを解析するにはどうすればよいですか?
現在、これを解決するためにheader("Content-type: image/svg+xml");
呼び出しをSVGファイルに含めていますが、これをすべてのSVGファイルに挿入するのではなく、グローバルに実行する方法があります。
最終的に、SVGファイルのハンドラーをapplication/x-httpd-php
に設定し、Apacheのmod_headers
を使用して正しいコンテンツタイプヘッダーを渡しました。
<Files "*.svg">
SetHandler application/x-httpd-php
Header set Content-Type "image/svg+xml"
</Files>
https://serverfault.com/questions/348439/how-to-fix-Apache-content-type-for-php-parsed-css でほぼ同じ質問を見つけたとき、これは解決しました。
Apache mod_mime documentation は、SetHandler
がAddType
をオーバーライドすることを示しています。
Mod_mimeはメタデータをファイル名拡張子に関連付けますが、コアサーバーは、特定のコンテナ内のすべてのファイル(
<Location>
、<Directory>
、または<Files>
など)を特定のメタデータに関連付けるために使用されるディレクティブを提供します。これらのディレクティブには、ForceType
、SetHandler
、SetInputFilter
、およびSetOutputFilter
が含まれます。コアディレクティブは、mod_mimeで定義されているファイル名拡張子マッピングをオーバーライドします。
.htaccessで mod_headersのヘッダーディレクティブ を使用して機能させる必要があります。
<FilesMatch "\.svg$">
SetHandler application/x-httpd-php
Header set Content-Type "image/svg+xml"
</FilesMatch>