.txtでない拡張子のファイルをtext/plainとして扱う

OS: CentOS Linux release 7.7.1908 (Core)
httpd-2.4.6-90.el7.centos.x86_64
Internet Explorer 11.719.18362.0

.lstという拡張子のテキストファイルをInternet Explorerで表示すると改行が反映されないという通報を受けた。調査を進めたところ、Content-Typeがtext/plainとして扱われていないが為に表示がクシャリとなっている模様である。

図1. Internet Explorerdeで改行が反映されていない様子

Google Chromeでは改行がきっちり表現されていたからInternet Explorer固有の問題であると早合点して、Microsoft Edgeへの移行を進言すべく目論んでいたところ、Microsoft Edgeもやはり表示がクシャリとなってしまったからすっかり計画が狂ってしまった。

図2. Microsoft Edgeでも改行が反映されていない様子

拡張子が.txtであれば勝手にtext/plain扱いされるけれども、本件はファイル名の変更が受け入れられない情勢である。唯一、Apacheの設定変更のみが許されているのである。それでこうである。

$ sudo vi /etc/httpd/conf/httpd.conf
<FilesMatch "\.lst$">
  AddType text/plain lst
</FilesMatch>

これで拡張子が.lstのファイルもtext/plainとして扱われてInternet Explorerでも改行が反映された。反映されないときは概ねキャッシュが邪魔をしているからCrtl+F5でスーパーリロードするのが宜しい。

図3. 改行が反映されるようになった様子

AddTypeディレクティブはFilesMatchディレクティブなどで適用範囲を限定しておく。さもなければuser.lst.guroのような、ファイル名に拡張子文字列を含むものにも影響が及ぶ。従って、ほんとうは SetHandler text/plain を使うのが良いようである。

図4. ファイル名にlstを含むファイルまで影響を及ぼしている様子

けれどもどうしてもSetHandlerの設定が反映されなかったので已む無くFilesMatchディレクティブで取り囲んだAddTypeでお茶を濁したものである。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください