routes.php
URIルーティングの設定を行います。
CodeIgniterのインストール直後に記述されている設定項目は「default_controller」と
「404_override」のみですがユーザ独自のルーティングルールを追加設定することも可能です。
$route['default_controller']
- デフォルトコントローラのみ設定
- デフォルトコントローラとアクションメソッドを設定
URIパスが指定されていない Topページ等へのリクエストを処理するにデフォルトのコントローラ、
または、アクションメソッドを設定します。
デフォルトコントローラのみを設定するとデフォルトのアクションメソッドは 「index」メソッドとなります。 上記設定で「http://your.site/」にアクセスすると「mycontroller」コントローラの 「index」メソッドが実行されます。
デフォルトアクションメソッドも設定する場合は、コントローラの後に「 /メソッド名 」を付けます。 上記設定で「http://your.site/」にアクセスすると「mycontroller」コントローラの 「mymethod」メソッドが実行されます。
全てのコントローラ共通のデフォルトアクションメソッドを設定することはできません。 設定できるのはURIパスがまったく無いリクエストでのデフォルトコントローラと そのアクションメソッドとなります。
$route['404_override']
対応するコントローラまたは、アクションメソッドが無いリクエストを処理するコントローラまたは、
メソッドを設定します。
記述方法は「default_controller」と同様です。
ユーザ定義のルーティングルール
CodeIgniterでは、ユーザ定義のURIルーティングルールを設定することが可能です。
設定方法は、route.php設定ファイルに「$route 連想配列」でルールを記述していきます。
具体的には、まずルーティングしたいURIパスを「$route」連想配列の添え字(キー)に記述し、
再マッピングするURIパスをその「値」として設定します。
- 簡単な例
上記設定で「http://your.site/before/」へのリクエストは「Aflter」クラスの「index」メソッドが処理されます。
しかし、この設定だけでは、「http://your.site/before/foo/」などのリクエストは、
希望通り「foo」メソッドへ再マッピングされません。
デフォルトメソッド以外のメソッドにも再マッピングされるようにするには以下のように
2つのルールを設定します。
$route['before/(:any)'] = 'after/$1';
ワイルドカード 一番上に戻る
- :any 全ての文字列にマッチします。正規表現の「 .+ 」と同じ意味になります。
- :num 数字の文字列にマッチします。正規表現の「 [0-9]+ 」と同じ意味になります。
- 例:
CodeIgniterのURIルーティングルール設定には2種類のワイルドカードが用意されています。
「http://your.site/before/hoge_hoge/」へのリクエストは「after」クラスの「foo」メソッドが処理をすることになります。
「http://your.site/before/0123/」へのリクエストは「after」クラスの「bar」メソッドが処理をすることになります。
正規表現 一番上に戻る
- 例:
ワイルドカードの他に、正規表現を使うことで、より柔軟なURIルーティングルール設定が可能です。
「http://your.site/before/abc/」及び、「http://your.site/before/xyz/」へのリクエストは「after」 クラスの「bar」メソッドが処理することになります。
「http://your.site/img/logo.jpg」など「.jpg」拡張子の付いたURIへのリクエストは 「img」クラスの「jpeg」メソッドが処理することになります。
後方参照 一番上に戻る
- 例:
ワイルドカード、正規表現共に後方参照を利用することが可能です。
通常の正規表現での利用方法と同様に「()」で囲み、設定値に「$1」「$2」のように指定できます。
「http://your.site/before/userid/987/」へのリクエストは「after」クラスの「userid」 メソッドの引数「987」で処理されることになります。
「http://your.site/before/12345/update/」へのリクエストは「after」クラスの「update」メソッドの 引数「12345」で処理されることになります。