Apache の .htaccess で Multiviews オプションを使えるようにする

Apache の Multiviews を使ってみようとして、ちょっとはまった。少し調べた結果問題は解決したけど、解決方法について日本語の良い情報が見あたらなかったので、日記を書いてみた。

今日生まれてはじてjsonを返すプログラムを書いた。アクセス時の Unix Timestamp を返すだけの簡単な機能なので、言語は何でも良かったんだけど、サーバの負荷を考えとりあえずphpで書いた。ただ、今後は別な言語(perl とか ruby とか)にしたくなるかもしれないので、

http://example.com/hoge.php

ではなく

http://example.com/hoge

でアクセス出来るようにしようと思い、Multiviews を使えば出来るという情報を見たことがあったので、.htaccess

Options +MultiViews
MultiviewsMatch Handlers

と書いてみた。そしたらうまくいかずエラーになり、ログには"Option Multiviews not allowed here"と出ている。httpd.conf で

AllowOverride All

と設定してあるのに何故?と思い、調べてみたら英語のページ http://mathiasbynens.be/notes/apache-allowoverride-all にたどりついた。
ここによると httpd.conf の設定を

AllowOverride AuthConfig FileInfo Indexes Limit Options=All,MultiViews

とすれば良いとのこと。これを試してみたらうまくいった。
上記URLのタイトル「Apache’s AllowOverride All doesn’t do what you think it does」は全く同感。