ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp はルートをどのようにロードしますか?

thinkphp はルートをどのようにロードしますか?

步履不停
步履不停オリジナル
2019-07-01 10:48:063088ブラウズ

thinkphp はルートをどのようにロードしますか?

ThinkPHP URL ルーティングの概要

簡単に言うと、URL ルーティングを使用すると、特定のルールに基づいて必要な URL をカスタマイズして、URL を美しくすることができます。ユーザー エクスペリエンスが向上し、検索エンジンの組み込みの目的にも役立ちます。

元の URL は次のとおりです:

http://www.5idev.com/index.php/Products/Show/category/ 5/id/123

この URL の本来の目的は、ID 123 の製品を 5 番目のカテゴリに表示することです。 URL ルーティングの書き換え後の URL は次のようになります。

http://www.5idev.com/index.php/product/5/123

If .htaccess を書き換えるファイルが使用される ルールによってエントリ ファイルが非表示になる場合、上記の URL はさらに簡略化して次のようになります:

http://www.5idev.com/product/5/123

この URL アドレスは比較的シンプルで扱いやすいです。

ヒント: Apache の URL Rewrite ルールを使用すると、URL のカスタマイズも実現できますが、これについてはここでは説明しません。興味がある場合は、Apache Rewrite に関連する記事を参照してください。

ThinkPHP URL ルーティング構成

ThinkPHP で URL ルーティング機能を使用するには、次の構成を行う必要があります。

プロジェクト構成ファイル Conf/ でルーティング機能を有効にします。 config.php ( true に設定):

'URL_ROUTER_ON' => true,

ルーティング ルール定義

が異なります2.x バージョンから 3.0 ルーティングルールは、プロジェクト設定ファイル config.php に配列形式で定義されており、具体的な定義ルールはルールルーティングと通常ルーティングに分かれています。ルール ルーティングの構文は次のとおりです。

形式 1: 'ルーティング ルール'=>'[グループ/モジュール/操作]?追加パラメータ 1=値 1&追加パラメータ 2=値 2...'
形式 2: 'ルーティング ルール' =>array('[グループ/モジュール/オペレーション]','追加パラメータ 1=値 1&追加パラメータ 2=値 2...')
形式 3:'ルーティング ルール' = >'外部アドレス'
形式 4:'ルーティング ルール'=>array('外部アドレス','リダイレクト コード')

##構文の説明

ルーティング ルールは、URL に表示したいルールです。次の要素値の部分は、実際の URL アドレスとパラメータです。ルーティング ルールが: で始まる場合は動的変数を意味し、そうでない場合は動的変数を意味します。は静的アドレス形式です 2 追加のパラメータは配列または文字列で渡すことができます。ルーティング ルールは変数の数値制約の定義をサポートします。例: 'product/:id\d'=>'Products/Show' ルーティング ルールは除外をサポートします非数値変数の例: 'news/: cate^add|edit|delete'=>'News/category' ルーティング ルールは、完全一致定義をサポートします。たとえば、'product/:id\ の静的アドレス部分d$'=>'Products/Show' ルーティング ルールはサポートされません。大文字と小文字を区別する外部アドレスで動的変数を参照する場合は、:1、:2 を使用します。ルール ルーティングは、たとえば、完全な動的定義、動的定義、および静的定義をサポートできます。 , ':user/blog/:id'=>'Home/Blog/user '

これらのルールと構文の説明は比較的わかりにくいです。上記のルーティング ルールと構文の説明を理解するのに役立つ例を以下に示します。 。

ルート有効化関数が構成ファイルで定義されている場合、システムはディスパッチ解析を実行するときに、現在の URL に定義されたルート名があるかどうかを判断し、定義されている場合は、定義されたルート名に従って URL 解析を実行します。ルーティングルール。

ThinkPHP URL ルーティングの例

この記事の冒頭の例を例として、ルートがどのように定義されているかを確認してください。プロジェクト設定ファイル Conf/config.php で次のルールを定義します:

//ルート定義

'URL_ROUTE_RULES'=> array(
'product/:category\d/:id\ d '=>'Products/Show', //ルールルーティング
),

次のアドレスにアクセスすると:

http://www.5idev 。 com/index.php/product/5/123


はアドレスを Products モジュールの Show オペレーションに解決し、get パラメーター category=5&id=123 を渡します。

追加の固定パラメータ (status=1 など) がある場合は、ルートを定義できます:

'product/:category\d/:id\d'=>'Products/ Show?status =1', //ルール ルーティング


は次の URL アドレスにも一致します:

http://www.5idev.com/index.php/product/5 /123 /1


上記は形式 1 に従って定義されたルートです。追加のパラメータがある場合は、2 番目の定義形式に変換できます:

'product/:category \d/:id\d'=>array('Products/Show','status=1')



上記のルーティング ルールでは、\d は一致する番号のみを意味します。この制約がなければ、すべての文字が一致する可能性があり、これがデフォルトの状況でもあります。受信パラメータの形式に厳密に同意したい場合は、通常のルーティングを使用してルールを定義します。

ルーティング形式: 外部アドレス

ルーティング形式 3 と形式 4 では、一致するルーティング形式が検出されると、外部アドレスにジャンプします。違いは、形式 4 にはリダイレクトがあることです。たとえば、301 は永続的なリダイレクトを表します。

ThinkPHP 関連の技術記事の詳細については、ThinkPHP 使用法チュートリアル 列にアクセスして学習してください。

以上がthinkphp はルートをどのようにロードしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。