1

雇用主にとってConcrete5システムがどのように機能するかを理解するように求められましたが、何かを理解することはできません。

サーバー上のディレクトリにConcrete5をインストールしました/realprofessionals。Concrete5システムが新しいページを作成すると、たとえば次のように、独自の絶対パスが提供されます。

http://www.wmcpartners.com/realprofessionals/footer

ただし、実際には。という/realprofessionalsディレクトリにフォルダは作成されていませんfooter。では、それはどのように機能しますか?http://www.wmcpartners.com/realprofessionals/footerをどのように機能させることができますか?

4

2 に答える 2

2

簡単な答え:すべてのページリクエストは、実際には唯一の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)。

もちろん、すべてのリクエストに多くのデータベースクエリが必要になるという欠点がありますが、ほとんどのサイト(数十億のページビューがないサイト)では、トレードオフの価値が十分にあります(さまざまな種類のキャッシュにより、パフォーマンスへの影響を減らすことができます)。

于 2010-11-19T20:22:27.307 に答える
1

ジョーダンの答えは素晴らしいです。プリティURLを有効にしているため、URLにindex.phpが表示されない可能性があります(concrete5の検索ボックスに「pretty」と入力して確認してください)。

とにかく、プログラムで内部ページへのリンクを追加する最良の方法は次のとおりです。

<a href="<?=$this->url('page-name');?>"> 
    page name 
</a>

クリーンURLの有無にかかわらず、ローカルホストとオンラインの両方で機能します。

(ページ名については、ダッシュボード/完全なサイトマップ/ページ名/プロパティ/ページのパスと場所に移動します。)

于 2014-06-10T09:58:32.917 に答える