windyakinってなんて読む

うぃんぢゃきんではない

さくらのレンタルサーバのメンテナンス後に拡張子省略ができなくなる件

さくらのレンタルサーバで昨年末頃から行われているFreeBSDやらApacheやらのバージョンアップを目的とするメンテナンス後に今までできていた拡張子の省略ができなくなってしまいました。

そもそも拡張子が省略できることについては前々から不評といえば不評だったので,今回のメンテナンスを期にデフォルトで動作させるのをやめたのでしょう。ですが僕は便利だと思って使っていたので動かなくなって困ってしまいました。

メンテナンス明けにこの状態になったことを知らされて,何とか元の状態に戻そうと最初はmod_rewriteを使って試みていましたが,うまいこと設定できませんでした。

そこで今回はどうすれば拡張子を省略できるのかを考えます。

結論

まぁ結論を先に言うと,.htaccessでAddTypeを使ってヘッダーを指定してやることで解決します。

例えば拡張子「.cgi」を省略させてやりたいのであれば

AddType application/x-httpd-cgi .cgi

とすることで.cgiを省略することが可能です。

他にも.phpだと

AddType application/x-httpd-php .php

理由

なぜこれで動くのかというと,そもそもApacheによる拡張子の省略はMultiViewsMatchというApacheモジュールが鍵となっています。しかしながらMultiViewsはAddTypeでMIMEタイプを指定された拡張子以外は省略することができません*1。そして今回のメンテナンス。メンテナンスが行われた後もMultiViewsMatch自体は読み込まれているようなのですが,MIMEタイプをサーバ側では指定してくれなくなったようで,ユーザ側でAddTypeによりMIMEタイプを指定する必要が出てきたわけです。

そういうことは先に言ってください…さくらインターネットさん。

注意

さくらのレンタルサーバでは.htaccessにOptionsを指定するとエラーを吐きます。間違えても

Options +MultiViews

なんて書かないようにしましょう。