あちこちみてたんですが、やっぱりコアに手を入れるしかなさそう。
1.1だとこれかな。
http://raminasser.com/category/cakephp/
>>一応対策は書きましたが、 コアをいじらないでできる方法があったら教えて欲しいです。
問題は2点
1個目はCache読み込み部分
/cake/dispatcher.php の Line638
$filename = CACHE . ‘views’ . DS . convertSlash($url) . ‘.php’;
ようは $_SERVER[‘REQUEST_URI’] を convertSlash したものがキャッシュ名になるので、
http://www.a.com/ の場合の REQUEST_URI = / を convertSlash した null がキャッシュファイル名になってしまうわけです。
なのでエラーになってキャッシュが読み込めない。
2個目はCacheロード部分
/cake/view/view.php の Line808
$cache->here = $this->here;
ようは dispatcherで作成された $this->here を持ちまわしてそのままファイル名にするわけです。
なので、キャッシュを書き出すだけ(読み込まない)でよいのなら
controllerに
$this->here = “/コントローラ名/”;
をつけたすだけでOKです。
まあ これじゃあ役に立たないので・・・
ちゃんとキャッシュが動くようにすると
こうなります。
/cake/dispatcher.php の Line638の
$filename = CACHE . ‘views’ . DS . convertSlash($url) . ‘.php’;
この文の上にこれを付け足す//例は toppages_controller を / にしている場合
if($_SERVER[‘REQUEST_URI’]==”/”){
$url = “toppages”;
$this->here = “/toppages/”;
}
コアライブラリにハードコーディングですが、これで / もキャッシュできるようになります。