XML等ブラウザで内容を表示するMIMEタイプのファイルに対し、ブラウザでアクセスすると、そのままファイルの内容を見せてしまうことがあります。ファイルをダウンロードさせたい場合、どのようにApacheに設定するか、まとめました。
ダウンロードダイアログを開くレスポンスヘッダー
多くのブラウザでは、
Content-Disposition: attachment;
をレスポンスヘッダーに設定すると、ダウンロードダイアログを表示します。これはRFC2616 Sec19の19.5.1にて提案された仕様です。IE5.5の頃は色々と問題があったようですが、最近のブラウザであれば、普通にダウンロードダイアログを表示します。
ということで、特定の拡張子であればこのレスポンスヘッダーを設定するようにApacheを設定します。
mod_headersを有効にする
Apacheで特定のヘッダーを設定するには、mod_headersをインストールしなければなりません。このmod_headersは標準では無効になっている事が多く、Debian/Ubuntu系では、下記のコマンドで有効にします。
# e2enmod headers
コマンド実行後、apacheの再起動も行われ、モジュールが有効になります。
ヘッダーを有効にする設定例
XMLという拡張子に対し、レスポンスヘッダーを設定するのであれば、下記のような設定になるでしょう。
httpd.conf
<FilesMatch "\.(xml)$">
Header set Content-Disposition attachment
</FilesMatch>
設定後、apacheに設定を読み込ませてください。
# service apache reload