shtml頁面include網頁文件Apache開啓SSI配置

什麼是shtml呢?

使用SSI(Server Side Include)的html文件擴展名,SSI(Server Side Include),通常稱爲"服務器端嵌入"或者叫"服務器端包含",是一種類似於ASP的基於服務器的網頁製作技術。默認擴展名是 .stm、.shtm 和 .shtml。

什麼是SSI?

SSI是英文Server Side Includes的縮寫,翻譯成中文就是服務器端包含的意思。從技術角度上說,SSI就是在HTML文件中,可以通過註釋行調用的命令或指針。SSI具有 強大的功能,只要使用一條簡單的SSI命令就可以實現整個網站的內容更新,時間和日期的動態顯示,以及執行shell和CGI腳本程序等複雜的功能。 網站維護常常碰到的一個問題是,網站的結構已經固定,卻爲了更新一點內容而不得不重做一大批網頁。SSI提供了一種簡單、有效的方法來解決這一問題,它將 一個網站的基本結構放在幾個簡單的HTML文件中(模板),以後我們要做的只是將文本傳到服務器,讓程序按照模板自動生成網頁,從而使管理大型網站變得容易。

shtml來include網頁文件Apache2.2 (httpd.conf文件)配置

1、 去掉AddType text/html .shtml ,AddOutputFilter INCLUDES .shtml前面註釋

    # Filters allow you to process content before it is sent to the client.
    #
    # To parse .shtml files for server-side includes (SSI):
    # (You will also need to add "Includes" to the "Options" directive.)
    #
    #AddType text/html .shtml
    #AddOutputFilter INCLUDES .shtml

2、查找Options Indexes FollowSymLinks 在後面加上INCLUDES

注意,SSI確實可以利用shell來執行命令,這個功能是極度危險的,因爲它會執行任何包含在 exec 標記中的命令。如果用戶有可能修改你的網頁內容,那麼你一定要關閉這個功能。可以在 Options 指令中加上 IncludesNOEXEC 參數,以關閉 exec 功能,同時又保留SSI。

<Directory />
#    Options FollowSymLinks
#    AllowOverride None
#    Order deny,allow
#    Deny from all
     Options FollowSymLinks INCLUDES IncludesNOEXEC
     AllowOverride None
</Directory>

也可以寫在 某個虛擬主機裏面如:
<VirtualHost 127.0.0.1:80>
   ServerAdmin [email protected]
   DocumentRoot d:/www
   ServerName localhost
   ErrorLog logs/localhost.com-error_log
   CustomLog logs/localhost.com-access_log common

   <Directory "D:/www">
        allow from all
        #Options +Indexes
        Options Indexes FollowSymLinks Includes
        DirectoryIndex index.php index.html index.htm default.htm index.shtml
   </Directory>
</VirtualHost>

3、重新啓動apache,ok你的shtml就可以加載頁面了。

4、用 include 命令包含頁面。include 元素能按 file 屬性或 virtual 屬性判斷應該包含的文件。file 屬性是一個相對於當前目錄的文件路徑,即不能是一個絕對路徑(以"/"開頭)或包含"../"的路徑。virtual 屬性可能更有用,它是一個相對於被提供的文檔的URL ,可以以"/"開頭,但必須與被提供的文檔位於同一服務器上。

<!--#include virtual="/footer.html"-->

二、SHTML精簡教程

你可以在SHTML文件中寫入SSI指令,當客戶端訪問這些shtml文件時, 服務器端會把這些SHTML文件進行讀取和解釋,把SHTML文件中包含的SSI指令解釋出來。
比如:你可以在SHTML文件中用SSI指令引用其他的 html文件(#include ),服務器傳送給客戶端的文件,是已經解釋的SHTML不會有SSI指令。它實現了HTML所沒有的功能,就是可以實現了動態 的SHTML,可以說是HTML的一種進化吧。像新浪的新聞系統就是這樣的,新聞內容是固定的但它上面的廣告和菜單等就是用#include引用進來的。

目前,主要有以下幾種用用途:

1、顯示服務器端環境變量<#echo>

本文檔名稱:
<!--#echo var="DOCUMENT_NAME"-->

現在時間:
<!--#echo var="DATE_LOCAL"-->

顯示IP地址
<!--#echo var="REMOTE_ADDR"-->

2、將文本內容直接插入到文檔中<#include>

<!--#include file="文件名稱"-->

<!--#include virtual="文件名稱"-->

file 文件名是一個相對路徑,該路徑相對於使用 #include 指令的文檔所在的目錄。被包含文件可以在同一級目錄或其子目錄中,但不能在上一級目錄中。如表示當前目錄下的的nav_head.htm文檔,則爲 file="nav_head.htm"。

virtual 文件名是 Web 站點上的虛擬目錄的完整路徑。如表示相對於服務器文檔根目錄下hoyi目錄下的nav_head.htm文件;則爲virtual="/hoyi/nav_head.htm"

3、顯示WEB文檔相關信息<#flastmod><#fsize>(如文件製作日期/大小等)

文件最近更新日期:
<!--#flastmod file="文件名稱"-->
文件的長度:
<!--#fsize file="文件名稱"-->

4、直接執行服務器上的各種程序<#exec>(如CGI或其他可執行程序)

<!--#exec cmd="文件名稱"-->

<!--#exec cgi="文件名稱"-->

將某一外部程序的輸出插入到頁面中。可插入CGI程序或者是常規應用程序的輸入,這取決於使用的參數是cmd還是cgi。

5、設置SSI信息顯示格式<#config>(如文件製作日期/大小顯示方式)

6、高級SSI<XSSI>可設置變量使用if條件語句。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章