PHPスクリプトがルートではないためですか?たとえば、article.phpがある場合、ルートは http:// mysite。 com/article.php 。
ルートが単純なファイルとして既に存在する場合、そのルートの概念をさらに抽象化するのはなぜですか?
ルーターの機能を理解するには、まず書き換えエンジンとは何かを理解する必要があります。 Wikipediaの記事 (私の強調)から:
書き換えエンジンは、Web URLの外観を変更するソフトウェアです(URL書き換え)。書き換えられたURL(短い、派手なURL、または検索エンジンフレンドリー-SEFとも呼ばれます)を使用して、Webページへのより短く、より関連性の高いリンクを提供します。 この手法は、Webページの生成に使用されるファイルと、世界に提示されるURLとの間にある程度の分離を追加します。
書き換えエンジンを使用する場合、URLとPHPスクリプトの間に1:1の相関関係はありません。同じ記事の例:
http://example.com/wiki/index.php?title=Page_title
次のように書き換えることができます。
さまざまな利点 を使用する方法があります。 PHPは通常Apacheと密に結合されているため、最も一般的に使用される書き換えエンジンは Apacheのmod_rewrite です。
URLを書き換えたい場合は、何らかのルーティングが必要です。ルーティングとは、URLを取得してコンポーネントに分解し、呼び出す実際のスクリプトを決定するプロセスだからです。 Zend Frameworkの 標準ルーターのドキュメントページ は、プロセスを次のように説明しています。
ルーティングは、URIエンドポイント(ベースURLの後に来るURIの一部)を取得してパラメーターに分解し、どのモジュール、コントローラー、およびそのコントローラーのアクションが要求を受信するかを決定するプロセスです。
ほとんどのPHP現在のフレームワークは MVCパターン に基づいており、MVCフレームワークではプロセスは次のようになります*:
index.php
スクリプト)に転送します。index.php
はURLを取得し、ルーティングプロセスを開始します。パラメータをコントローラとメソッドに一致させるには、通常、ルートと呼ばれる複雑で動的なルーティングパターンを処理できるように 正規表現 による一致を使用します。ルートの良い例は CodeIgniterのURI Routingドキュメントページ にあります:
$ route ['journals'] = "ブログ";
$ route ['blog/joe'] = "blogs/users/34";
$ route ['product /(:any)'] = "catalog/product_lookup";
$ route ['product /(:num)'] = "catalog/product_lookup_by_id/$ 1";
$route
配列は、パターンをキーとして保持し、結果のアクションをcontroller/action_method/dynamic_parameter
形式の値として保持します。
*これは、正規プロセスの説明ではなく、単純化された説明です。