2010-11-18 13 views
1

私は、コンクリート5システムがどのように雇用主のために働くかを理解するように求められましたが、何かを把握することはできません。Concrete5は絶対パスをどのように配置しますか?

/realprofessionalsというサーバー上のディレクトリにConcrete5がインストールされています。 Concrete5システムが新しいページを作成すると、それは、例えば、それらを自分の絶対パスを与える:

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

しかし、それは実際にfooterと呼ばれる/realprofessionalsディレクトリにフォルダを作っていません。それではどうしますか? http://www.wmcpartners.com/realprofessionals/footerはどのように動作しますか?

答えて

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/paths/for/blog/posts)を付けることが容易になります。

もちろん、すべてのリクエストには多くのデータベースクエリが必要ですが、ほとんどのサイト(ページビュー数がないサイト)ではトレードオフが十分です(さまざまなタイプのキャッシュがパフォーマンスヒットを減らすのに役立ちます) )。ヨルダンの答えは優れて

1

、私はあなたが(それをチェックするためにconcrete5の検索ボックスに「かわいい」タイプ)プリティURLを有効にしているので、あなたはおそらく、URLにindex.phpを表示されないことを追加します。

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

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

これは、両方のローカルホストとオンライン上の、またはプリティURLなしで動作します。

(ページ名はダッシュボード/フルサイトマップ/ページ名/プロパティ/ページのパスと場所に移動します)

関連する問題