CakePHP

CakePHPのエラー404画面を振り分ける方法

2013/05/09

PCページ、ガラケーページがあるサイトをCakePHPを利用しリニューアルする案件で、
404ページなど、エラー画面を振り分ける方法にちと悩んだので、忘備録としてポストしておきます。

例によってCakePHPのバージョンは1.3です。

PCサイトへは http://sample.jp というURLでアクセス、
管理画面には http://sample.jp/admin/admins/ でアクセス、
ガラケーサイトへは http://sample.jp/i/ でアクセスする仕様としますので
routes.php を編集などします。(その内容はまたポストしたいと思います)

プレットフォームによる 404エラー の振り分け

error404.ctp を作成

URLを削られるなどして存在しないControllerやActionへアクセスした場合に表示させる404エラーページですが、
元から用意されているテンプレは /cake/libs/view/errors/error404.ctp がその正体です。

内容を見ても単に設定したエラーメッセージを表示するだけのものなので、
他ページに沿ったデザインの404ページを作成し、 /app/views/errors/ へ設置します。

今回は、
・フロント画面用のエラーページとして、front_error.ctp、
・管理画面用のエラーページとして、デフォルトの error404.ctp を流用、
・ガラケー用のエラーページとして、mobile_error.ctp
を用意しました。

app_error.php を作成

次に、 /app 直下に app_error.php を作成し、以下のように記述。

以下の記述で404エラーページのレイアウトを指定します
フロントの404エラーのレイアウトは、デフォルトレイアウトを利用するので、特に指定せずとも問題ありません。

// 管理画面用
$this->controller->layout = 'admin_default';
// ガラケー用
$this->controller->layout = 'mobile';

管理画面の404エラーページは、デフォルトのものを利用するので、この記述。
parent::error404($params);

ガラケー用・フロント用のエラーページの表示は、以下の記述にします。
//ガラケー用
$this->_outputMessage('mobile_error404');

//フロント用
$this->_outputMessage('front_error404');

今回、ガラケーページはあまり重要でないとのことと、URLに「?」や「/」などの特殊文字を含むとRoutingが出来ないという理由から、以前のURLにアクセスされた場合にはトップページに301リダイレクトする仕様にしてみました。

404エラーページをデザインしたいなって場合は、こちらのサイトなどから参考にしてみてはいかがでしょうか。

日本のWebサイトの404ページデザインいろいろ+α - かちびと.net
http://kachibito.net/web-design/japanese-404-design.html

[tgAmazonItemLookup asin="B009EBE0XO" related="1"]
[tgAmazonItemLookup asin="B004HAFW8Y" related="1"]

-CakePHP
-, ,