先のポストに引き続き、 IIS x PHP 絡みで、 Zend Framwork を IIS 上の PHP で動かす時のメモ。特に rewrite モジュールが apache のようにはいかないので、それについて。
とりあえず今回の環境は以下の通り
IIRF はフリーの rewrite Isapi モジュールで、ほぼ mod_rewrite と同様の動きをする。
まずはこいつのバイナリをここからダウンロードし、 zip を解凍する。そして中身の lib/IsapiRewrite4.dll を適当な場所( C:\Inetpub など)にコピーする。
次に IsapiRewrite4.dll を配置したフォルダと同じ場所に IsapiRewrite4.ini を作成し以下の設定をする。
RewriteLog c:\temp\iirfLog.out RewriteLogLevel 5 RewriteRule ^/([\w\d\/]+)$ index.php [L,I,U]
ちなみにこの正規表現は見直す価値あり。
最後に IIRF を IIS manager から組み込む。
IIRF を有効にしたい Web Site を [Web Sites] フォルダから選ぶか、もしくは [Web Sites] 自体を選択し、右クリックして Property(プロパティ)を開く。
開いたサブウインドウの中の [ISAPI Filters] (ISAPIフィルター?)タブを開き [Add] (追加?)ボタンを押す。フィルターの名前に適当に rewrite などと入力し、値に先ほど配置した IsapiRewrite4.dll を参照指定する。
ここまで来て [OK] で適用すると IIRF が有効になり rewrite が正しく動作するようになるはず。
Configuring Your URL Rewriter
[fw-general] IIRF routes images to index.php as well