さくらサーバで Kohana 3 を動かす
さくらインターネットのレンタルサーバでは、ビジネス用の最上位コース(ビジネスプロ)以外の PHP は CGI モードで動作することになります。このため思わぬ制限があったりして、よくはまります。
Kohana 3 を動かす上で一番困ったのが、URLリライトの方法。そのままインストールすると、例えば、example.com/index.php/home のようにどうしてもURLに index.php が入り込みます。htaccess であれこれ試してみてもダメ。なんとか解決したのでその方法。
実は Kohana 2 でもちょっと工夫をしないとURLリライトができません。そのやり方を応用します。
まず application/bootstrap.php を変更します。どうやら CGI モードだと環境変数 $_SERVER['PATH_INFO'] が取得できないようです。なので、
<?php /** * Execute the main request using PATH_INFO. If no URI source is specified, * the URI will be automatically detected. */ //$request = Request::instance($_SERVER['PATH_INFO']); //このように GET で取得するようにする $request = Request::instance($_GET['path_info']); //こんな感じに本サーバ定数で振り分けるといいかも $request = IN_PRODUCTION ? Request::instance($_GET['path_info']) : Request::instance($_SERVER['PATH_INFO']);
というふうに修正します。
次に htaccess を
# Rewrite all other URLs to index.php/URL #RewriteRule .* index.php/$0 [PT] # 上記の変数を GET でindex.phpに渡します。 RewriteRule ^(.+)$ /index.php?path_info=$1 [PT,L]
これでさくらサーバで Kohana 3 のURLがすっきりするはず、です。