什麼是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條件語句。