[CakePHP]400系エラーが発生した場合にトップページにリダイレクトさせる
ググると色々と方法が出てくるので今更ですが、
記事によって微妙に違ったので、最終的に上手くいったものをメモ。
cakephpがエラーをハンドリングしているControllerは以下。
/lib/Cake/Error/ExceptionRenderer.php
この中の、219行目あたりにある、error400の処理が400系エラー時の処理にあたる。
なので、これをオーバーライドしてやる形でリダイレクト処理を書く。
(直接編集してもいいが、コアシステムになるのでなるべく触らないほうがよさげ)
まずエラーの際の処理をオーバーライドするためのクラスファイルを作成。
/lib/Cake/Error/AppExceptionRenderer.php
1 2 3 4 5 6 7 8 | |
この時に注意点は、redirect関数を呼び出すときに、$this->controller経由で呼び出さないとエラーになってしまった。
$this->redirect()ではダメだった。
で、coreクラスでエラー時に呼び出すクラスを作成したクラスに変更。
/app/Config/core.php 79行目付近
1 2 3 | |
後はコントローラーなどがないページへアクセスすれば、指定のページにリダイレクトが発生する。
参考
CakePHP2.Xで404 Not Foundエラーをリダイレクトする方法 | WEB制作ブログ
CakePHP2 404エラーの場合にトップページにリダイレクト | Web Studio Faust