[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