« Let's noteの買い替え(CF-W4)あけましておめでとうございます。 »

IISでCakePHP(完全版)

IISでCakePHP(完全版)

パーマリンク 2009/01/05 14:54:20 著者: kumaold メール
カテゴリ: 自宅鯖, CakePHP

これだけCakePHPが普及してきたのに、どういうわけかIISでCakePHPをまともに動かしてみたという日本語の記事をまだ見たことがありません。

以前やってみて、mod_rewriteの設定がうまいこといかなく頓挫しました。

冬の休暇中の宿題という事でやってみて、やっとその方法を見つけました。


※以下、Windows Server 2003 R2 SP2+IIS 6.0+PHP 5.2.6にて。
 CakePHPは1.2を使用し、/cakephp/ディレクトリに導入するものとする。

#Windows Server 2008+IIS 7.0でも動作OKでした! 設定画面がちょっと違いますが同じ要領です。【2/28】


まずはmod_rewriteの代替品という事で「URL Rewrite Filter for IIS」ですが、いつの間にか公式サイトが消滅していました。


1. DLしてきたものを解凍してC:\mod_rewriteに展開
2. IISマネージャを開き、左のツリーの「Webサイト」を右クリック、プロパティ
3. 「ISAPIフィルタ」タブを開き、追加をクリック
4. フィルタ名: IIS_rewrite(任意)
  ファイル名: C:\mod_rewrite\mod_rewrite.dll を指定してOK
5. IISの再起動 (コマンドプロンプトでiisreset)

ここまではよくあるISAPIフィルタ導入なのでいいとして、問題はこれから。


CakePHPのrewriteの流れを見ると、まず全て/app/webrootに流してから該当ファイルがなければindex.php?url=...に渡すような仕様になっています。

しかしこの模造品rewriteではどうもRewrireCondにREQUEST_FILENAMEが使えないのか、書式が違うのかうまくいきません。


しばらく苦戦した後に、無理矢理なやり方ですがこれで妥協しました。

#リクエストURLがファイルっぽければwebrootにrewrite
RewriteRule ^/cakephp/(.*\.(htm|html|php|css|js|jpg|jpeg|gif|png|txt|swf|pdf))$ /cakephp/app/webroot/$1 [l]
#その他はコントローラへのアクセスとみなす
RewriteRule ^/cakephp/(.*) /cakephp/index.php?url=$1


いままでまったく使えなかった環境からすれば上出来なので満足です。

特に問題ないので、ファイル名と紛らわしいURIを使わなければ普通に使えそうです。


肝心のURL Rewrite Filter for IISですが、CakePHP用に設定済のものを置いときます。(GPLなので問題ないと思いますが)

URL Rewrite Filter for IIS (CakePHP on IIS用)

以上、半年がかりの自宅鯖にCakePHP導入でした。


Windows Server 2003 実践ガイドWindows Server 2003 実践ガイド
村嶋 修一

技術評論社 2005-09-09
おすすめ平均

type="text/javascript" src="http://www.ad16.jp/socailmedia.php?a=CCBot%2F2.0+%28http%3A%2F%2Fcommoncrawl.org%2Ffaq%2F%29&u=http%3A%2F%2Fkuroutoshikou.blog16.jp%2Findex.php%2F2009%2F01%2F05%2Fiisa_scakephpif_ar_a_uc_if" charset="EUC-JP">

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2017年3月
 << <   > >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

検索

XMLフィード

16ブログ     powered by b2evolution