ホームページ  >  記事  >  バックエンド開発  >  CodeIgniter フレームワーク URL ルーティングの概要、CodeIgniter フレームワーク url_PHP チュートリアル

CodeIgniter フレームワーク URL ルーティングの概要、CodeIgniter フレームワーク url_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:19:31696ブラウズ

CodeIgniter フレームワーク URL ルーティングの概要、CodeIgniter フレームワーク URL

URIルーティング

一般的に、URI 文字列には、それに対応する固有のコントローラー クラス/メソッドがあります。 URI のさまざまな部分は次のパターンです:

コードをコピーします コードは次のとおりです:

example.com/class/function/id/

ただし、場合によっては、この関係をリダイレクトして、URL に対応するのではなく、別のクラス/関数を呼び出すことが必要になる場合があります。

たとえば、URL に次のプロトタイプを使用するとよいでしょう:

コードをコピーします コードは次のとおりです:

example.com/product/1/
example.com/product/2/
example.com/product/3/
example.com/product/4/

通常、URL の 2 番目の部分はメソッド名を表しますが、上記の例ではプロダクト ID を表します。 CodeIgniter はこの関数を実装して、ユーザーが URI ハンドラーをリダイレクト (再マップ) できるようにします。

独自のルーティングルールを設定します

ルーティング ルールは application/config/routes.php ファイルで定義されます。このファイルには、独自のルーティング ルールを定義できる $route という名前の配列が表示されます。 定義は 2 つの方法で使用できます: ワイルドカードまたは正規表現

ワイルドカード

一般的なワイルドカード ルートは次のようになります:

コードをコピーします コードは次のとおりです:

$route['product/(:num)'] = "カタログ/製品_検索";

ルートでは、配列のキーには照合する URI が含まれ、配列の値にはルートのリダイレクト先が含まれます。上記の例では、最初の部分に「product」という単語が表示されます。 URL の 2 番目の部分に数字 (:num) が含まれている場合、「catalog」クラスと「product_lookup」メソッドが代わりに使用されます (リダイレクトされます)。

リテラル値を照合することも、次の 2 つのワイルドカード タイプを使用することもできます:

:num は数字のみを含むセグメントに一致します。

:any は任意の文字に一致します (複数のセグメントも可能)。次のような複数の値に一致します。

$route['product/(:any)'] = "catalog/product_lookup/$1/$2/$3/$4/$5"; // URL 全体のすべてのパラメータをカタログ コントローラー メソッドで product_lookup に渡します。

注: ルートは定義された順序で実行されます。

より高いレベルのルートが常に優先されます。

簡単な例をいくつか示します:

コードをコピーします コードは次のとおりです:
$route['ジャーナル'] = "ブログ";

URL の最初のセグメント (クラス名) がキーワード「journals」の場合、処理のために「blogs」クラスにリダイレクトされます。

コードをコピーします コードは次のとおりです:
$route['blog/joe'] = "ブログ/ユーザー/34";

URL の最初の 2 つのセグメントが「blog」と「joe」の場合、処理のために「blogs」クラスの「users」メソッドにリダイレクトされ、ID「34」がパラメータとして設定されます。

コードをコピーします コードは次のとおりです:
$route['product/(:any)'] = "カタログ/製品検索";

URL の最初のセグメントとして「product」が使用されている場合、2 番目のセグメントが何であっても、「catalog」クラスの「product_lookup」メソッドにリダイレクトされます。

コードをコピーします コードは次のとおりです:
$route['product/(:num)'] = "カタログ/product_lookup_by_id/$1";

URLの最初のセグメントが「product」の場合、2番目のセグメントが数字の場合は「catalog」クラスにリダイレクトされ、一致したコンテンツが「product_lookup_by_id」メソッドに渡されます。

重要な注意事項: 前後に「/」を追加しないでください。

正規表現

必要に応じて、正規表現を使用してルーティング ルールをカスタマイズできます。逆参照も含めて、任意の正規表現を使用できます。

注: 後方参照を使用する場合は、二重バックスラッシュ構文をドル記号構文に置き換えてください (\1 は $1 に置き換えられます)。

一般的な正規表現は次のようになります:

コードをコピーします

コードは次のとおりです: $route['products/([a-z]+)/(d+)'] = "$1/id_$2";

上記の例では、products/shirts/123 に似た URI は、shirts コントローラー クラスの id_123 メソッドを呼び出すことによって置き換えられます。

ワイルドカードと正規表現を混合することもできます。

システムによって予約されたルート

システムは 2 つのルートを保持します:

最初のルートはシステムのデフォルトルートです:

コードをコピーします コードは次のとおりです:

$route['default_controller'] = 'ようこそ';

このルートは、URI にアクセスするクラスとコントローラーの情報が含まれていない場合 (つまり、http://localhost/ci などのルート ディレクトリのみにアクセスする場合) にどのコントローラーがロードされるかを示します。上記の例では、システムは「welcome」クラス (コントローラー) をロードします。必ずデフォルト ルートを設定する必要があります。そうしないと、ホームページに 404 エラーが表示されます。

2 番目のルートは 404 ページです:

コードをコピーします コードは次のとおりです:

$route['404_override'] = '';

このルートは、要求されたコントローラーにアクセスできない場合にどのコントローラーがロードされるかを識別します。これは、デフォルトの 404 エラー ページを上書きすることと同じです (つまり、独自の 404 ページを定義する機能を提供します)。ただし、show_404() メソッドには影響せず、application/errors/error_404.php にあるデフォルトの error_404.php ページがロードされます。

重要: 予約ルートは、ワイルドカード ルートまたは正規表現ルートの前に定義する必要があります。

PHP CodeIgniter フレームワークで現在のページの URL を取得する方法

//URL ヘルパーを使用します
$this->load->helper('url');
current_url = current_url();

CodeIgniterフレームワークのURLセグメントのindexphpを削除する方法、例、マニュアルの指示が明確ではなく、自分でドームテストを書いても間違っています

これを実現するには、擬似静的のみを使用できます。 .htaccess 設定ルールの実装

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/874110.html技術記事 CodeIgniter フレームワーク URL ルーティングの概要、CodeIgniter フレームワーク URL URI ルーティング 一般に、URI 文字列には、対応する固有のコントローラー クラス/メソッドがあります。 URI のさまざまな部分は次のとおりです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。