2016-08-02 16 views
0

爲了內部使用(無需外部訪問),我需要將一個簡單/小型的網站相當快地放在一起,它將包含一些表單和簡單的交互式頁面。使用/index.php作爲網站的簡單模板和文檔路由器?

我並不是真的想要CMS的維護開銷,但爲了讓每個頁面具有一致的外觀和感覺等,能夠讓每個頁面都基於一個通用模板來包裝圍繞獨特的頁面內容,包括HTML頭,標題,網站導航,頁腳等。

一種方法是在每個單獨的頁面中通過PHP包含各種片段,但涉及每個頁面的重複,並且不會如果我決定稍後可能需要大幅度改變事情,那麼它的規模會很好。

另一種方法是使用主DocumentRoot index.php文件作爲模板,而不是讓它包含請求的頁面'在'內部(這樣每個其他頁面實際上只是一個部分文件定義'title'和'body'的變量(用於主頁面主體內容))。

我看到,我可以用$_SERVER['PATH_INFO']提取所需的文件路徑(相對於DocumentRoot的)和$_SERVER['REQUEST_URI']讓整個請求字符串(如果有可能是任何GET參數);對於索引頁面本身的實際內容,我可以讓它包含一個替代名稱的文件;並且Apache重寫規則中必須有某種方式可以從最終的URI中消除index.php ..但我還沒有想到通過比這更進一步。

我相信這肯定是以前遇到很多次的場景。我可以花上幾天的時間思考並重新發明自己的車輪,但我沒有時間去做這件事,在任何情況下它可能都不會很好地利用它。

有沒有人有一些現成的「quickie」代碼,對於這個「足夠好」,或者知道「正式」發佈的東西(在這一點上,一個快速入侵的工具會變成一個實際的軟件包?

感謝您的任何建議。

+0

MVC框架處理您計劃實現的大部分內容。如果你正在尋找相當準系統的東西,你可以嘗試MO框架... http://github.com/interwap/mo-framework –

+0

感謝您的建議。不幸的是,我使用的網絡服務器只有PHP 5.3。 (你的Mo框架說它需要PHP 5.6。) – dave559

回答

0

你可以將你請求的頁面作爲url參數發送到你的index.php,比如'index.php?page = requested_pa​​ge',並在你的index.php文件中包含以下規則:

<?php 
include("./pages/".$_GET['page'].".php"); 
?> 
+0

這當然是沿着我最初的想法,謝謝。我希望可能有一個現有的解決方案不是太複雜,但也是強大的(例如,防止訪問無效頁面,設法使用頁面路徑(而不是GET請求)等)。 )。 – dave559

0

我不確定您是否會付出努力將比實施簡單的CMS的努力少。大多數系統都有簡單的設置,併爲您完成大部分工作。任何時候節省不實施CMS都會在日後維護費用。不要使用「內部使用」作爲製造不良軟件的藉口。除非這是一個在幾周內被忽略的一次性解決方案,否則您(或其他開發人員)將不得不擴展和維護該軟件。

+0

你可能是對的。不幸的是,我們的資源非常有限,「足夠好」被認爲是「足夠好」(儘管這不會讓我開心)。恐怕我現在沒有時間安裝和學習任何複雜的新系統。我們現有的內部網絡系統現在的標準已經過時了,並且還沒有達到替換名單的首位。我想建立的網站只有合理的限制,而不是太複雜的目的,直到我們可以安裝一個合適的新CMS。 – dave559

0

重定向所有的請求指數:

RewriteEngine on 
RewriteBase/
RewriteRule ^(?!index\.php$|(?:css|js|media)(?:/|$)). index.php [L] 

類似的東西將停止重定向指數環和除請求靜態內容的文件夾發送一切(的變化,以適應)索引中的處理程序。通過$_SERVER['REQUEST_URI']訪問URL。

相關問題