2010-11-18 13 views
1

我被要求弄清楚Concrete5系統如何爲僱主工作,我無法弄清楚什麼。Concrete5如何安排它的絕對路徑?

我將Concrete5安裝到名爲/realprofessionals的服務器上的一個目錄中。當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模板 - 頁眉,頁腳,側邊欄,並且如果更改模板,它將自動反映在所有使用的頁面上。此外,它還可以更輕鬆地對網頁進行隨機播放,併爲您提供所需的任何網址(例如,最後沒有「.php」擴展名,或/ 2010/11/date/based/paths/for/blog/posts)。

當然缺點是每個請求都需要很多數據庫查詢,但是對於大多數網站(那些沒有大量頁面瀏覽量的用戶)來說,這種折衷是非常值得的(並且各種類型的緩存可以幫助降低性能)。

1

喬丹的回答是優秀的,我想補充一點,你可能沒有看到的index.php在URL,因爲你已經啓用漂亮網址(輸入「漂亮」上concrete5的搜索框來檢查)。

總之,以編程方式添加鏈接到的內部網頁最好的方法是:

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

它的工作原理都在本地主機上,並在網上,有或沒有漂亮的URL。

(對於頁面名稱轉到儀表板/完整站點地圖/頁面名稱/屬性/頁面路徑和位置。)