IISでISAPI_Rewrite
CakePHPをIIS上で動かすときに、mod_rewriteの設定のところで暫くハマりました。
今回のホスティング環境は、iSLE infinitoというプランです。
普通にダウンロードしてきたcakephpの.htaccessをUPしてindex.phpにアクセスすると
下記のように赤い警告が表示されます。
URL rewriting is not properly configured on your server.
1. Help me configure it
2. I don't / can't use URL rewriting
調べてみるとmod_rewriteの代わりにISAPI_Rewriteというものが使えるようです。
さらにISAPI_Rewriteには有償版と無償版があるようで
無償版の方は、サイト別に設定を持てません。
つまりIIS全体で1つの設定ということになります。
この違いを理解していなかったために数時間ロスしてしてしまいました。
ホストを限定してRewriteRuleを適用させるために、RewriteCondを使い
RewriteEngine On
RewriteCond Host: example\.com
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
上図のように指定してやると、警告が消え見事期待した動きになりました。
いやぁ、WindowsServerはあまり詳しくなかったので勉強になりました。
以下後述
このあとできたファイルをのせてもうまく動きませんでした
なのでよくある質問をたよりに
強引に書き換えました。
ルーティングがうまくいってなかったようなので
mod_rewriteを使わない設定にして
core.phpの Configure::write('App.baseUrl', env('SCRIPT_NAME')) をコメントアウト
app/.htaccess 削除
app/weboot/.htaccess 削除
ドキュメントルートの.htaccessに
RewriteBase
RewriteRule ^/hogehoge/index\.html$ /index.php/hogehoge/index\.html [L]
というようにして対応しました。
もっとスマートな方法ないかなぁ〜
情報求めます!
CakePHP 1.3によるWebアプリケーション開発―オープンソース徹底活用
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2010/06
- メディア: 単行本
- 購入: 2人 クリック: 74回
- この商品を含むブログ (15件) を見る