IIS で CakePHP や Ruby on Rails を動作させるためには URL 書き換え 機能の設定が必要となります。
ここでは CakePHP を動作させるまでの手順とURL 書き換え 用の設定ファイル(web.config)を紹介します。
- CakePHPをサイトからダウンロードします。

cakephp.org
- IIS マネージャで Webサイトを追加します。
今回はダウンロードしてファイルを f:\apps 以下に展開しました。
物理バスの指定は “f:\apps\cake_1.2.5\app\webroot” となります。
今回は Port 85 を指定しましたが、ホスト名を指定することで Port 80 を複数の Webサイトとして利用することもできます。

Webサイトの追加
- 設定
- f:\apps\cake_1.2.5\app\config\core.php の salt の値をデフォルト値から変更します。
Configure::write(’Security.salt’, ‘XXXXXXXX’);
- f:\apps\cake_1.2.5\app\tmp フォルダ以下への書き込み権限を付与します。
この権限がない場合、以下のようなエラーとなります。
http://localhost:85/index.php

Warning Permission denied
- CakePHPブログチュートリアルに従い、サンプルアプリケーションを作成します。
- URL 書き換えの設定
以下のファイルを ”f:\apps\cake_1.2.5\app\webroot\web.config” に作成します。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Imported Rule 5" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" />
</rule>
<rule name="Imported Rule 3" stopProcessing="true">
<match url="^$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll" />
<action type="Rewrite" url="/" />
</rule>
<rule name="Imported Rule 4" stopProcessing="true">
<match url="(.*)" ignoreCase="false" />
<conditions logicalGrouping="MatchAll" />
<action type="Rewrite" url="/{R:1}" />
</rule>
<rule name="Imported Rule 1-1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" pattern="" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
上記のファイルの設定によりIISマネージャの画面では以下のような表示となります。

URL書き換え
- サンプルアプリケーションの動作確認

サンプルアプリケーション
URL書き換えが正し設定されていない場合、以下のようなエラーとなります。
HTTP エラー 404.0 – Not Found
以上