[CakePHP] URLにwebrootを指定したときに表示される画面を変える方法
せっかくなので、昨日調べたことをまとめる。
CakePHPを使用する場合、Webサーバーではドキュメントルートを /app/webroot に設定することが多いと思う。
別にルートでなくてもよいのだが、/app/webroot に当たるURLをブラウザで開くと、以下のようなCakePHP設定チェック画面が表示される。

これは /app/config/core.php で Configure::write('debug', 2); と設定されている場合で、
Configure::write('debug', 0); と設定されている場合は以下のような画面が表示される。

この画面を変更する方法だが、上のCakePHP設定チェック画面に書かれているように /app/views/pages/home.ctp を作成すればよい。
デフォルトではこのディレクトリの中身はemptyなので、/cake/libs/view/pages/home.ctp が表示される。(core.phpの debug の値によって表示画面が変わるのは、この home.ctp 内で制御しているから)
以下のソースコードを /app/views/pages/home.ctp に記述すれば、index.htmlにリダイレクトされる。
そもそもなぜルートを指定すると /cake/libs/view/pages/home.ctp が表示されるかと言うと、/app/config/routes.php で
そのため、これを修正して表示画面を変えることもできる。
例えば、
デフォルトで表示されるCakePHP設定チェック画面に
To change the content of this page, create: APP/views/pages/home.ctp.
と書かれているからそれで終了なはずなのに、なぜか自分は1時間ぐらい調べた。
CakePHPを使用する場合、Webサーバーではドキュメントルートを /app/webroot に設定することが多いと思う。
別にルートでなくてもよいのだが、/app/webroot に当たるURLをブラウザで開くと、以下のようなCakePHP設定チェック画面が表示される。

これは /app/config/core.php で Configure::write('debug', 2); と設定されている場合で、
Configure::write('debug', 0); と設定されている場合は以下のような画面が表示される。

この画面を変更する方法だが、上のCakePHP設定チェック画面に書かれているように /app/views/pages/home.ctp を作成すればよい。
デフォルトではこのディレクトリの中身はemptyなので、/cake/libs/view/pages/home.ctp が表示される。(core.phpの debug の値によって表示画面が変わるのは、この home.ctp 内で制御しているから)
以下のソースコードを /app/views/pages/home.ctp に記述すれば、index.htmlにリダイレクトされる。
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: ./index.html");
header("HTTP/1.1 301 Moved Permanently");
header("Location: ./index.html");
そもそもなぜルートを指定すると /cake/libs/view/pages/home.ctp が表示されるかと言うと、/app/config/routes.php で
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
と設定されているから。そのため、これを修正して表示画面を変えることもできる。
例えば、
Router::connect('/', array('controller' => 'tests'));
とすると、ブラウザでルートを指定したときtestsコントローラーのindexアクションが実行される。デフォルトで表示されるCakePHP設定チェック画面に
To change the content of this page, create: APP/views/pages/home.ctp.
と書かれているからそれで終了なはずなのに、なぜか自分は1時間ぐらい調べた。
スポンサーサイト