Codeigniterで独自の404エラーページを表示する方法

Codeigniterで独自の404エラーページを表示する方法をご紹介します。

デフォルトの404エラーページはシンプルなメッセージから構成されています。サイトを公開する場合、このページも独自のデザインにしたいですよね。

Codeigniterには404ページをカスタマイズする設定が用意されているので、簡単に独自の404ページを作成することができます。

また、独自のコントローラーを使用することができるので、柔軟な処理が可能になります。

スポンサーリンク

ルーティングの設定

「application/config/routes.php」の’404_override’に、404エラー用のコントローラとアクションを記述します。

今回は「errors」コントローラーの「error_404」メソッドを実行します。

記載ファイル:application/config/routes.php

// コントローラ/アクション の形式で記載
// errorsコントローラーのerror_404アクションを実行
$route['404_override'] = 'errors/error_404';

アクション名が省略された場合、Codeigniterはindexアクションを実行します。

// errorsコントローラーのindexアクションを実行
$route['404_override'] = 'errors';
$route['404_override'] = 'errors/';

404エラー用のコントローラとメソッドの作成

「application/controllers」にerrors.phpファイルを作成し、404エラー用のコントローラーを実装していきます。

errors.phpには$route[‘404_override’]に記載した通りのコントローラーとアクションを記載します。

新規ファイル:application/controllers/errors.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

// My_Controllerをextendsでも可
class Errors extends CI_Controller {

  public function __construct() {
      parent::__construct();
  }

  /**
   * 404 エラーページ
   */
   public function error_404() {

    // $data:ビューに渡す変数
    $data = array();

    /**
     * ここに必要な処理を記述していく
     *   ex) DBから値を取得する
     *   ex) $data に値をセットする・・等
     */

    // HTTPステータスコードに404を設定
    // これによりHTTPヘッダに404がセットされる
    $this->output->set_status_header('404');

    // 404エラー用のビューを指定
    // ビュー内、errors/error_404.phpの内容を表示する
    $this->load->view('errors/error_404', $data);
  }

}

404エラー用のビューを作成

404エラー用のビューファイルを作成します。

VIEW用のディレクトリ内にアクションで指定したファイルを作成し、ビューを記述していきます。

新規ファイル:application/views/errors/error_404.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>404 NOT FOUND</title>
</head>
<body>
  <?php // 404エラー用のビューを記述します。 ?>
  <h1>404 NOT FOUND</h1>
  <p>お探しのファイルは見つかりませんでした。</p>

  <?php // テンプレート用に渡した変数も取得できます。 ?>
  <?php var_dump($data); ?>
</body>
</html>

show_404()やshow_error()使用時の注意

今回の404エラー実装方法には注意点があります。

Codeigniterの組み込み関数であるshow_404()やshow_error()などの関数を使用している場合、今回のerrorsコントローラーは呼び出されず、各関数の処理が実行されます。

具体的には、show_404()やshow_error()はVIEW内のエラー処理用のファイルを読み込むように記述されており、これらの関数が呼ばれた場合には以下のファイルが読み込まれます。

show_404() ⇒ applicatin/errors/error_404.php
show_error() ⇒ 関数内で設定されたファイル。デフォルトではapplicatin/errors/error_general.php
このため、show_404()やshow_error()を使用している場合にはCodeigniterの例外処理(CI_Exceptions)を拡張して上記の関数の動作を変更したり、読み込まれるビューファイルを編集したりする必要があります。

コメント

タイトルとURLをコピーしました