mod_rewriteを使わずにURLからblosxom.cgiを隠す方法を考える

"."無しのファイル名(URL)にしたい場合には、例えば blosxom.cgi をblosxom という拡張子無しのファイル名に変更したとして、.htaccessに

<Files blosxom>
SetHandler cgi-script
</Files>

と書いても動作するかと思います。一応自分の環境では確認。

または、.htaccessで Options +Multiviews が使えるサーバであれば、blosxom.cgiというファイル名のままでも、blosxom/... という拡張子無しのURLでアクセスできます(Multiviewは元々コンテントネゴシエーションのための機能ではありますが)。

* * *

(以下は余談です)

ただ、以上の方法だと http://example.jp/blosxom/ のようなURLにはできても、トップディレクトリのURL(http://example.jp/ のようなURL)をblosxomのインデックスページにすることはできないわけで、そういう話になるとmod_rewriteを使う方法がやはり便利ということになりそう。

……と諦めるのも癪なので、以前にScriptAliasMatchを使ってなんとかする方法を考えたことがありました。

ScriptAliasMatch (.*)(/|\.html?|\.rss|\.wikieditish|\.trackback)$ \
    /somewhere/directory/blosxom.cgi$1$2

てな感じで。つまりURLが / またはblosxomで使う拡張子で終わる場合には、どこか別のところにあるblosxom.cgiにPATH_INFOを渡して動いてもらうというものです。*.jpgとかの画像ファイルその他を置きたい場合には、通常の公開ディレクトリに置いて頂くとして。

しかしながらScriptAliasMatchは.htaccessには書くことができないディレクティブであり、レンタルサーバでバーチャルホスト運用をしているような状況ではおそらく使えなさそうな気がします。また自前のサーバを持っていてhttpd.confを自由に設定できるにしても、それだったらmod_rewriteを有効にした方が手っ取り早いわけで、あまり使いどころの無い方法だなあと自分でも思っています。でも一応動作確認したのでこうしてメモしておいてみたり。