読者です 読者をやめる 読者になる 読者になる

うまいぼうぶろぐ

linuxとhttpdとperlのメモ

apache + subversionのwebdav上のhtml/textファイルを正しく開く方法

apache subversion

思いつきエントリで。リポジトリのファイルをwebから直接参照したい場合に。
通常のsubversionの設定だと、index.html とかのファイルにアクセスしてもContent-typeがplain/textなのでhtmlソースが表示される。また、ただのテキストな設定ファイルでもエンコードを指定できないので文字化けする(かも?)。なので、例えばテキストは全部UTF8で書いている場合は

<Location /svn >
  DAV svn
  ## その他 authzとかの設定
</Location>

## 拡張子 .htmlはContent-typeをtext/htmlに
<LocationMatch ^/svn/.*\.html>
  ForceType text/html
</LocationMatch>

## 拡張子 .html と directory 以外のファイルはUTF-8なtext/plainに設定
<LocationMatch ^/svn/(?!.*(?:\.html$|/$)).+>
  Header set Content-type "text/plain; charset=UTF-8"
</LocationMatch>

とかすればいけるんじゃないかとか思った。実際、とりあえずは思い通りに動いている。
"text/plain; charset=UTF-8" にするのは正規表現の否定先読みを使って、.html と directory は除外で(directoryにアクセスすると、ファイル一覧を表示するhtmlを表示するため)。

追記

ぐぐったら、subversionの属性でmime-typeを設定できるらしいw こっちが王道かー。ま、でも個々の属性設定するの何か面倒だわーって場合はapacheの設定のが楽だわね。