»
S
I
D
E
B
A
R
«
IISでCakePHPを動かす
12月 10th, 2009 by kwin

IIS で CakePHP や Ruby on Rails を動作させるためには URL 書き換え 機能の設定が必要となります。

ここでは CakePHP を動作させるまでの手順とURL 書き換え 用の設定ファイル(web.config)を紹介します。

  1. CakePHPをサイトからダウンロードします。
    cakephp.org

    cakephp.org

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

    Webサイトの追加

    Webサイトの追加

  3. 設定
    • 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

      Warning Permission denied

  4. CakePHPブログチュートリアルに従い、サンプルアプリケーションを作成します。
  5. 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書き換え

  6. サンプルアプリケーションの動作確認

    サンプルアプリケーション

    サンプルアプリケーション

    URL書き換えが正し設定されていない場合、以下のようなエラーとなります。

    HTTP エラー 404.0 – Not Found

以上


Leave a Reply

You can trackback from your own site.
»  Substance: WordPress   »  Style: Ahren Ahimsa