このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0075

routes.php

URIルーティングの設定を行います。
CodeIgniterのインストール直後に記述されている設定項目は「default_controller」と 「404_override」のみですがユーザ独自のルーティングルールを追加設定することも可能です。

$route['default_controller']

    URIパスが指定されていない Topページ等へのリクエストを処理するにデフォルトのコントローラ、 または、アクションメソッドを設定します。

  • デフォルトコントローラのみ設定
  • $route['default_controller'] = 'mycontroller';

    デフォルトコントローラのみを設定するとデフォルトのアクションメソッドは 「index」メソッドとなります。 上記設定で「http://your.site/」にアクセスすると「mycontroller」コントローラの 「index」メソッドが実行されます。

  • デフォルトコントローラとアクションメソッドを設定
  • $route['default_controller'] = 'mycontroller/mymethod';

    デフォルトアクションメソッドも設定する場合は、コントローラの後に「 /メソッド名 」を付けます。 上記設定で「http://your.site/」にアクセスすると「mycontroller」コントローラの 「mymethod」メソッドが実行されます。

    全てのコントローラ共通のデフォルトアクションメソッドを設定することはできません。 設定できるのはURIパスがまったく無いリクエストでのデフォルトコントローラと そのアクションメソッドとなります。

$route['404_override']

    対応するコントローラまたは、アクションメソッドが無いリクエストを処理するコントローラまたは、 メソッドを設定します。
    記述方法は「default_controller」と同様です。

    $route['404_override'] = 'myerror/notfound';
    上記設定で、対応するコントローラまたは、アクションメソッドが無いリクエストは 「myerror」クラスの「notfound」メソッドが処理することになります。

ユーザ定義のルーティングルール

CodeIgniterでは、ユーザ定義のURIルーティングルールを設定することが可能です。
設定方法は、route.php設定ファイルに「$route 連想配列」でルールを記述していきます。
具体的には、まずルーティングしたいURIパスを「$route」連想配列の添え字(キー)に記述し、 再マッピングするURIパスをその「値」として設定します。

  • 簡単な例
  • $route['before'] = 'after';

    上記設定で「http://your.site/before/」へのリクエストは「Aflter」クラスの「index」メソッドが処理されます。
    しかし、この設定だけでは、「http://your.site/before/foo/」などのリクエストは、 希望通り「foo」メソッドへ再マッピングされません。
    デフォルトメソッド以外のメソッドにも再マッピングされるようにするには以下のように 2つのルールを設定します。

    $route['before'] = 'after';
    $route['before/(:any)'] = 'after/$1';

ワイルドカード 一番上に戻る

    CodeIgniterのURIルーティングルール設定には2種類のワイルドカードが用意されています。

    • :any
    • 全ての文字列にマッチします。正規表現の「 .+ 」と同じ意味になります。
    • :num
    • 数字の文字列にマッチします。正規表現の「 [0-9]+ 」と同じ意味になります。
  • 例:
  • $route['before/:any'] = 'after/foo';

    「http://your.site/before/hoge_hoge/」へのリクエストは「after」クラスの「foo」メソッドが処理をすることになります。

    $route['before/:num'] = 'after/bar';

    「http://your.site/before/0123/」へのリクエストは「after」クラスの「bar」メソッドが処理をすることになります。

正規表現 一番上に戻る

    ワイルドカードの他に、正規表現を使うことで、より柔軟なURIルーティングルール設定が可能です。

  • 例:
  • $route['before/abc|xyz'] = 'after/bar';

    「http://your.site/before/abc/」及び、「http://your.site/before/xyz/」へのリクエストは「after」 クラスの「bar」メソッドが処理することになります。

    $route['img/.+\.jpg'] = 'img/jpeg';

    「http://your.site/img/logo.jpg」など「.jpg」拡張子の付いたURIへのリクエストは 「img」クラスの「jpeg」メソッドが処理することになります。

後方参照 一番上に戻る

    ワイルドカード、正規表現共に後方参照を利用することが可能です。
    通常の正規表現での利用方法と同様に「()」で囲み、設定値に「$1」「$2」のように指定できます。

  • 例:
  • $route['before/userid/(:num)'] = 'after/userid/$1';

    「http://your.site/before/userid/987/」へのリクエストは「after」クラスの「userid」 メソッドの引数「987」で処理されることになります。

    $route['before/(:num)/(\w+)'] = 'after/$2/$1';

    「http://your.site/before/12345/update/」へのリクエストは「after」クラスの「update」メソッドの 引数「12345」で処理されることになります。