CakePHP2.Xでは、404 NOT Foundエラーが発生した場合、
デフォルトでは、
app/View/Errors/error400.ctp
の内容が表示されます。
サイトによっては、
404 Not Foundエラーが発生した時に、
トップページ等に301リダイレクトしたい場合があります。
CakePHP2.xで404 Not Foundエラーを301リダイレクトする方法を紹介します。
1. 独自の例外レンダリングクラスを作成します。
app/Lib/Error/AppExceptionRenderer.phpを作成
<?php
App::uses(‘ExceptionRenderer’, ‘Error’);
class AppExceptionRenderer extends ExceptionRenderer {
public function error400($error) { // 400番台のエラー時に呼ばれるメソッドを上書き
$this->redirect(‘/’, 301); // トップページに301リダイレクト
}
}
2. 1.で作成したクラスに例外のレンダリングクラスを切り替えます。
app/Config/core.phpを変更
Configure::write(‘Exception’, array(
‘handler’ => ‘ErrorHandler::handleException’,
// ‘renderer’ => ‘ExceptionRenderer’, // コメントアウトします
‘renderer’ => ‘AppExceptionRenderer’, // この行を追加します
‘log’ => true
));
以上の手順で完了です。