IIS + ISAPI_RewriteでZend Framework2007年07月14日 04時48分31秒

しばらく前から仕事でやることになったのでZend Frameworkをいじり始めた。

PHPになれていないだの、関数多すぎだの、変数の「$」がキモいだのと、dara-jのスキル上いろいろと問題はあるが、なんとかコントローラ周りの流れがつかめてはきた。

Zend Frameworkで標準のMVCモデルを使う場合、URLのリライト機能が必要となる(こんな風に自分でルータ書けばそうでもないのか)ので、開発中はApacheをコマンドライン起動してそこで動作確認を取っていた。

そろそろ多少は使い物になるものが作れるようになってきた(と勘違いしている)ので、家のしょぼサーバ(Win2K Pro、ってサーバじゃないじゃん)で動かせるようにしたくて、ISAPI_Rewriteを導入してみた。

ISAPI_RewriteはApacheにおけるmod_rewriteの代わりをするISAPIフィルタなのだが、.htaccessに

RewriteEngine on

RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
なんて書くよりも断然メンドウくさい

まず、仕方ないとはいえ対象ディレクトリに設定ファイルを置く形ではなく、インストールディレクトリにある「httpd.ini」にすべて記述しなきゃならない。なので、アプリケーションの位置を変えるたびにhttpd.iniを編集せにゃならん。(幸いIISの再起動は不要なのだが)

また、上記制約もあるせいか、記述が異様にメンドウになる。例えば先にあげた.htaccessと同様のことを、ローカルホストの/hogeに定義する場合、

[ISAPI_Rewrite]
RewriteRule ^/hoge/[\w/\%]*(?:\.(?!(?:js|ico|gif|jpg|png|css)$)[\w\%]*$)? /hoge/index.php [I]
といった具合に、ほどよく複雑になる。まぁ、これをコピーして起点部分のみ書き換えればZF向けの設定には十分なんだが。

まぁ、そんなこんなでIIS + ISAPI_Rewriteな環境で問題なくZend Frameworkで作ったアプリケーションが動いたワケでした。動いてあたりまえなんだけど、ちょっと感動した。