簡単な答え:すべてのページリクエストは、実際には唯一のindex.phpファイルを経由しています。ページコンテンツは、サーバー上のファイルではなく、データベースに保存されます。
長い答え:
Concrete5(そしてそれに関してはほとんどのPHPベースのCMS)は次のように機能します:すべてのリクエストはindex.phpファイルを介してルーティングされます。このルーティングは、.htaccessファイルのいくつかのmod_rewriteルールで適用されます。ルールには、「リクエストについては、実際にはそのページに移動せず、代わりにindex.phpに移動して、リクエストされたパスの残りを$_GETパラメーターとして渡す」と記載されています。次に、index.phpコード(またはindex.phpファイルに含まれている他のコード)で、要求されたページは、Apacheによって$ _GETパラメーターに入れられたパスに基づいて決定されます(のmod_rewriteルールに従って)。 htaccess)、および適切なコンテンツがデータベースから取得されます。
サーバー上のファイルではなくデータベースにコンテンツを保存することには、いくつかの利点があります。たとえば、すべてのページで同じhtmlテンプレート(ヘッダー、フッター、サイドバー)を再利用できます。テンプレートを変更すると、使用されているすべてのページに自動的に反映されます。また、ページをシャッフルして、必要なURLを指定するのが簡単になります(たとえば、最後に「.php」拡張子を付けない、または/ 2010/11 / date / based / path / for / blog / posts)。
もちろん、すべてのリクエストに多くのデータベースクエリが必要になるという欠点がありますが、ほとんどのサイト(数十億のページビューがないサイト)では、トレードオフの価値が十分にあります(さまざまな種類のキャッシュにより、パフォーマンスへの影響を減らすことができます)。