CodeIgniterフレームワークURLルーティングまとめ

3453 ワード

URIルーティング
一般的に、URI文字列には、コントローラクラス/メソッドが一意に対応しています.URIの各部分は以下のパターンである.
 
  
example.com/class/function/id/

しかし、いくつかの例では、URLに対応する(呼び出し)のではなく、異なるクラス/メソッド(class/function)を呼び出すために、この関係をリダイレクトしたいかもしれません.
たとえば、このプロトタイプ(prototype)をURLに採用したい場合があります.
 
  
example.com/product/1/
example.com/product/2/
example.com/product/3/
example.com/product/4/

一般に、URLの2番目の部分はメソッド名を表すが、上記の例では、1つの製品のIDを表す.CodeIgniterは、ユーザがURI処理プログラムを再指向することができるように、この機能を実現することができる.
自分のルーティングルールを設定します
ルーティングルールはアプリケーション/config/routesで定義.phpファイルでこのファイルでは、$routeという配列が表示され、独自のルーティングルールを定義できます.定義には、ワイルドカード(wildcards)または正規表現(Regular Expressions)の2つの方法があります.
ワイルドカード
典型的なワイルドカードルーティングは、次のように見えます.
 
  
$route['product/(:num)'] = "catalog/product_lookup";

1つのルーティングにおいて、配列のキーは一致するURIを含み、配列の値はルーティングがリダイレクトされる宛先を含む.上記の例では、URLの第1の部分に単語「product」が表示する、URIの第2の部分に数字(:num)が表示される場合、「catalog」クラスと「product_lookup」メソッドが代替的に使用される(リダイレクトされる).
テキストの値を一致させるか、次の2つのワイルドカードタイプを使用できます.
:numは、数値のみを含むsegment(セグメント)に一致する.
:anyは任意の文字(複数のsegmentセグメントであってもよい)に一致する.次のように、複数の値を一致させることができます.
  $route['product/(:any)'] = "catalog/product_lookup/$1/$2/$3/$4/$5";//urlの各パラメータ全体をcatalogコントローラのproduct_に渡します.lookupメソッド.
注意:ルーティングは定義された順序で実行する.高レベルのルーティングは、常に低レベルのルーティングよりも優先する.

以下に簡単な例を示します.
 
  
$route['journals'] = "blogs";

URLの最初のセグメント(クラス名)がキーワード「journals」である場合、「blogs」クラスにリダイレクトする.
 
  
$route['blog/joe'] = "blogs/users/34";

URLの最初の2つのセグメントが「blog」と「joe」である場合、「blogs」クラスの「users」メソッドにリダイレクトされる.そして、ID"34"をパラメータとする.
 
  
$route['product/(:any)'] = "catalog/product_lookup";

「product」がURLの最初のセグメントである場合、第2のセグメントが何であるも「catalog」クラスの「product_lookup」メソッドにリダイレクトされる.
 
  
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";

「product」がURLの最初のセグメントである場合、第2のセグメントが数値である場合、「catalog」クラスにリダイレクトされ、一致するコンテンツが「product_lookup_by_id」メソッドに渡されます.
重要なヒント:前または後ろに「/」を付けないでください.
正規表現
正規表現を使用してルーティングルールをカスタマイズできる場合があります.任意の有効な正規表現は許容され、逆参照である.
注意:逆参照を使用する場合は、2つの反斜線構文をドル記号構文に置き換えます(\1を$1に置き換えます).
典型的な正規表現は次のように見えます.
 
  
  $route['products/([a-z]+)/(\d+)'] = "$1/id_$2";

上記の例では、products/shirts/123と同様のURIがshirtsコントローラクラスを呼び出すid_に変換されます.123方法
ワイルドカードと正規表現を混合して使用することもできます.
システムほぞんルーティング
2つのルートが保持されます.
1つ目は、システムのデフォルトのルーティングです.
 
  
$route['default_controller'] = 'welcome';

このルーティングは、URIにアクセスするクラスおよびコントローラ情報が含まれていない場合(すなわち、ルートディレクトリのみにアクセスする場合、例えばhttp://localhost/ci)をクリックします.前の例では、「welcome」というクラス(コントローラ)がロードされます.デフォルトのルーティングを設定することを保証する必要があります.そうしないと、トップページに404エラーが表示されます.
2つ目は404ページのルーティングです.
 
  
$route['404_override'] = '';

このルーティングは、要求されたコントローラがアクセスできない場合にどのコントローラがロードされるかを識別します.これは、デフォルトの404エラーページ(すなわち、404ページを独自に定義する機能を提供する)を上書きすることに相当する.でもshowには影響しません404()このメソッドは、デフォルトのアプリケーション/errors/error_をロードします.404.phpのerror_404.phpページ.
重要:保持されているルーティングは、すべてのワイルドカードまたは正規表現のルーティングの前に定義する必要があります.