Tomcat上に作成したHTMLで.warをダウンロードしようとすると、勝手に拡張子が.zipになる。この課題をTomcatの設定で解決する方法をご紹介します。
発生事象
あるとき、Chrome/Edgeがともに使用不可なのでIE11でファイルをdownloadしようとしました。対象ファイルは.warファイルです。downloadにはa要素にhref属性、download属性を付けたHTML5を使用しました。すると次のような挙動をします。
勝手に.zipになっていますね。これは.warを選択したのですが、このような挙動になります。そして、GUIからファイルの種類を.warに変更しようとしても変更できません。
解決方法
IEでzipに変換されてしまうのはWebサーバー側の設定を変更することで解決することが出来ます。IEの設定を変更することで解決する方法もあるようですが、今回はWebサーバー側の設定を変更して解決する方法をご紹介します。
今回の対象WebサーバーはTomcatです。TomcatのHOMEディレクトリまで移動しましょう。
そしたら次のコマンドでweb.xmlを開き編集していきます。
vi conf/web.xml
web-app要素の中にmime-mapping要素を書けばOKです。次のように既にたくさんの拡張子が登録されています。そこに追記しましょう。
<mime-mapping> <extension>123</extension> <mime-type>application/vnd.lotus-1-2-3</mime-type> </mime-mapping> <mime-mapping> <extension>3dml</extension> <mime-type>text/vnd.in3d.3dml</mime-type> </mime-mapping> <mime-mapping> <extension>3ds</extension> <mime-type>image/x-3ds</mime-type> </mime-mapping>
私はこんな感じで書いてみました。mime-typeはかなり自由で良いと思います。
<mime-mapping> <extension>war</extension> <mime-type>application/webapp-archive</mime-type> </mime-mapping>
これで再度、.warファイルをダウンロードしてみます。
無事に出来ましたね。これで、定時で帰れます。
ちなみに、apache httpd サーバーでは httpd.conf や .htaccess で下記にようにMIMEタイプを追記すると、.htaccessを配置した場所配下のファイルが対象になるようです。(試してはいませんが調べたものをメモ的に残しておきました。いつか自分で実験して記事をあげるために)
AddType application/war .war