2010-12-16 67 views
0

我正在使用多個SSI的網站上工作。由於這些是靜態的,因此將頁面作爲.shtml提供服務並且不轉換爲php包含並作爲.php。現在的問題是,在其中一個包括我想用PHP動態生成一些內容。下面是正確的方式去做或者有其他更好的解決方案。我現在在做的是:從SSI包含PHP的正確方法是什麼

<!--test.shtml--> 
<!DOCTYPE html> 
<html lang="en" dir="ltr"> 
<body> 
<!--#include virtual="/test.php" --> 
</body> 
</html> 

<!--test.php--> 
<?php echo 'Hello from php'; ?> 

我讀過,這不應該工作,但我讀的是,它指的是Apache 1.3。在我家的服務器上,我運行的是Apache 2. [東西],它工作正常,它也可以在託管該站點的服務器上運行。那麼這是否在1.3版本中不起作用,但是在2版本中,還是在某種程度上我很幸運,真的應該以不同的方式做到這一點?

我生成的內容只是在網站導航中添加一個css class/id,以突出顯示當前頁面,所以PHP似乎有點矯枉過正,因爲它在第一次生成後幾乎是靜態的,我可以緩存服務器上的PHP輸出,但也許有一個更好的方法來做到這一點(?)。

感謝您的幫助。

編輯 - 不是一個答案,而是關於我的替代方法問題。 我發現了一種可能更適合我的情況的方法(我毫不猶豫地說清潔劑,因爲我確信可以爭論到奶牛回家)。由於我目前沒有在網站上使用PHP,所以我現在堅持使用它。正如Dan M here所述。

+0

僅供參考,'.shtml'不是靜態的 – ajreal 2010-12-16 17:56:42

+0

@ajreal,謝謝,但在某種意義上?從某種意義上說,我可以通過更改SSI來更改每個頁面上的內容。還是你建議我可以用'.shtml'動態生成內容。對不起,有點困惑。我錯過了基本的東西嗎? – tjm 2010-12-16 18:00:20

+0

[什麼是.shtml](http://en.wikipedia.org/wiki/.shtml)。包括一個php腳本,不管PHP是否爲靜態html – ajreal 2010-12-16 18:02:06

回答

1

由於這些都是靜態的很有道理 以服務頁面作爲的.shtml,而不是 轉換到PHP包括和作爲 .PHP

好吧,既然你是在調用PHP引擎在這兩種情況下都需要解析整個頁面,因爲.php頁面可能更有意義,因爲您可以保證它也能在Apache 1.x服務器上工作。然後,您可以按照您的建議將緩存頁面輸出爲.html,並在DirectoryIndex中將該擴展名優先。

+0

這是關於將緩存頁面作爲.html返回的簡單方法。這是關於頁面解析會發生什麼?整個事情將不得不被解析,我認爲只有PHP文件將被解析,並且它的輸出返回到SSI包括被添加到頁面。 – tjm 2010-12-16 18:17:23

+0

.shtml頁面必須經過解析才能找到ssi註釋字符串,因此您無法避免使用任一方法解析。您可以使用輸出緩衝將結果寫入磁盤。 http://php.net/manual/en/book.outcontrol.php – webbiedave 2010-12-16 18:26:08

+0

另外,如果PHP首先被返回,然後在html的上下文中被解析,那麼服務器如何知道它需要運行該頁面PHP。至少在家裏,我的服務器沒有設置解析.shtml與PHP。直接在.shtml中包含php不起作用。因此,如果PHP返回後得到解析,那麼必須有一些邏輯繼續說我們已經包含了一個php文件,所以現在應該將這個頁面解析爲php。當然,如果是這種情況,首先解析php並返回它的輸出將更有意義。 – tjm 2010-12-16 18:28:53

相關問題