Plackで静的コンテンツのMIME型を指定する方法
Apache の設定ファイルおける AddType を Plack でどうやるのか。
Plack::App::File (あるいはそれをラップしている Plack::Middleware::Static) は、拡張子から Content-Type を決定するのに MIME::Types を使っている thanks to miyagawa-san。
なので、たとえば Apache の
AddType application/x-xpinstall .xpi AddType application/octet-stream .msi
に対応する Plack::App::File の設定は、
MIME::Types->new(); MIME::Types->addType( MIME::Type->new( type => 'application/x-xpinstall', extensions => [ qw(xpi) ], ), MIME::Type->new( type => 'application/octet-stream', extensions => [ qw(msi) ], ), );
23:19追記: 先頭で MIME::Types->new() しているのは、new を1回も呼ばないうちに addType しちゃうと、デフォルトの型定義が読み込まれないため。
12/26追記: Plack-0.9025 以降では Plack::MIME に変更に。以下のような形で使います。
Plack::MIME->add_type('.xpi' => 'application/x-xpinstall'); Plack::MIME->add_type('.msi' => 'application/octet-stream');