本文轉(zhuǎn)自?http://blog.csdn.net/xtra6714/article/details/7097634
在網(wǎng)站構(gòu)建過中。當(dāng)我們遇到很多的內(nèi)容為靜態(tài)頁面滤愕,而頁首與頁腳又經(jīng)常要更換時,如果一直使用html文件總會有很多的麻煩怜校。因為批量修改起來很不方面间影,所以我們總希望能將頁腳與頁尾include到html文件中來。html屬于客戶端解析形的格式化語言茄茁,自4.0后幾乎很難再有大的變動(畢竟很多瀏覽器只按4.0標(biāo)準(zhǔn)來解析)魂贬,所以至今也沒include這樣的概念。而html的框架(frame與iframe)雖然可以用來包含首頁與頁腳文件裙顽,但使用frame與iframe的概念與動態(tài)頁面(asp,jsp,php等)的include那樣不同付燥,frame與iframe的主體頁面與被包括的頁的不是一個頁面,而通過include的方式調(diào)用的頁面主體頁面與被包括的頁面仍然是一個頁面愈犹,這樣頁面再加載的時就沒速度的影響键科,更不會有多個窗口這樣的問題。當(dāng)然frame與iframe的作用還是挺大的甘萧,只是這與include這樣包括頁面進(jìn)來的概念不同萝嘁。
除frame與iframe之外,常用的調(diào)用文件的方法還有采用js扬卷。這與include概念倒是很接近牙言,但可以需要客戶端js的支持,而且修改也不很方面怪得,因為被包括的js是通過document.write來輸出html代碼咱枉,這樣雖然能達(dá)到效果,可js畢竟執(zhí)行客戶端動態(tài)效果更好徒恋,比如現(xiàn)在較流行的AJAX蚕断。所以無論是frame/iframe還是js都與include不太一樣(倒是Dreamweaver中的library與include很像,可惜只能用在Dreamweaver中)入挣,而我們有時頁面有很多靜態(tài)頁面亿乳,內(nèi)容不是動態(tài)的且沒有規(guī)律可循,更不好做到數(shù)據(jù)庫里去。如新浪的新聞之類的葛假,這時我們可以采用shtml的方式來做這些頁面障陶。--JarryLi in BeiJing
那什么是shtml呢?
使用SSI(Server Side Include)的html文件擴(kuò)展名,SSI(Server Side Include)聊训,通常稱為"服務(wù)器端嵌入"或者叫"服務(wù)器端包含"抱究,是一種類似于ASP的基于服務(wù)器的網(wǎng)頁制作技術(shù)。默認(rèn)擴(kuò)展名是 .stm带斑、.shtm 和 .shtml鼓寺。
什么是SSI?
SSI是英文Server Side Includes的縮寫,翻譯成中文就是服務(wù)器端包含的意思勋磕。從技術(shù)角度上說妈候,SSI就是在HTML文件中,可以通過注釋行調(diào)用的命令或指針朋凉。SSI具有 強(qiáng)大的功能州丹,只要使用一條簡單的SSI命令就可以實現(xiàn)整個網(wǎng)站的內(nèi)容更新,時間和日期的動態(tài)顯示杂彭,以及執(zhí)行shell和CGI腳本程序等復(fù)雜的功能墓毒。 網(wǎng)站維護(hù)常常碰到的一個問題是,網(wǎng)站的結(jié)構(gòu)已經(jīng)固定亲怠,卻為了更新一點內(nèi)容而不得不重做一大批網(wǎng)頁所计。SSI提供了一種簡單、有效的方法來解決這一問題团秽,它將 一個網(wǎng)站的基本結(jié)構(gòu)放在幾個簡單的HTML文件中(模板)主胧,以后我們要做的只是將文本傳到服務(wù)器,讓程序按照模板自動生成網(wǎng)頁习勤,從而使管理大型網(wǎng)站變得容易踪栋。
如何使你的Apache服務(wù)器支持SSI?
Apache(如何在windows以及l(fā)inuc下安裝apache請參見另兩篇文章)默認(rèn)是不支持SSI的,需要我們更改httpd.conf來進(jìn)行配置图毕。我這里以windows平臺的Apache 2.0.x為例(在linux平臺下與之相同)夷都,打開conf目錄下的httpd.conf文件,搜索“AddType text/html .shtml”予颤,找到:
以下是引用片段:
# AddType text/html .shtml?
# AddOutputFilter INCLUDES .shtml
把這兩行前面的#去掉 囤官。
然后搜索“Options Indexes FollowSymLinks”
在搜索到的那一行后面添加“ Includes”
即將該行改變?yōu)?Options Indexes FollowSymLinks Includes
熟悉apache manual的可能會覺得比較容易。
保存httpd.conf蛤虐,重起apache即可
到此我們就完成了對Apache SSI的設(shè)置党饮。
如何讓你的IIS服務(wù)器支持SSI
windows 2000:
IIS里添加一個應(yīng)用程序擴(kuò)展名映射
可執(zhí)行文件:C:\WINDOWS\system32\inetsrv\ssinc.dll
擴(kuò)展名:shtml/shtm
windows 2003 2003默認(rèn)已經(jīng)支持SSI(shtml文件),只需在IIS的"Web服務(wù)擴(kuò)展"里設(shè)置"在服務(wù)器端的包含文件"為"允許" 即可IIS6.0對于SSI進(jìn)行了一些改進(jìn),以前IIS5.0的一些程序遷移過后可能無法運用驳庭。
一個經(jīng)常的出現(xiàn)問題是出現(xiàn)如下錯誤:
"處理 SSI 文件時出錯 - Error processing SSI file"
經(jīng)過測試刑顺,以下做法會導(dǎo)致這個錯誤:
1、服務(wù)器物理路徑使用中文名。
2捏检、包含文件中使用中文名荞驴。
3、包含文件不存在贯城。
4、被包含的文件再次包含使用中文名的文件霹娄。
該錯誤在Unicode編碼時依舊能犯,屬于IIS的問題。
解決方法:對于使用SSI的站點物理和URL地址都全部使用英文犬耻。
shtml文件測試?
主體文件踩晶,比如命名為test.shtml,內(nèi)容為(把head.html與foot.html文件包進(jìn)來枕磁,與asp,jsp,php中的include相同)
以下是引用片段:
你好渡蜻,這是中間的內(nèi)容
頁首文件,比如命名為head.html,內(nèi)容為
以下是引用片段:
Untitled Document
頁尾文件,比如命名為foot.html计济,內(nèi)容為
以下是引用片段:
我是頁尾版權(quán)信息
然后運行web server茸苇,在地址欄中打開test.shtml文件,就會得到一個完整的頁面沦寂,包括頭與尾文件学密。
shtml中簡單的SSI命令
SSI具有強(qiáng)大的功能,只要使用一條簡單的SSI命令就可以實現(xiàn)整個網(wǎng)站的內(nèi)容更新传藏,時間和日期的動態(tài)顯示腻暮,以及執(zhí)行shell和CGI腳本程序等復(fù)雜的功能。比如我們修改上面提及的test.shtml文件毯侦,加入以下代碼哭靖,將會顯示服務(wù)器日期以及客戶端IP等:
以下是引用片段:
? 本文檔名稱:
?
? 時區(qū):
?
? 你的IP地址是:
?
? 今天是:? ? ?
?
SSI指令基本格式
程序代碼:
以下是引用片段:
說明:
1.是HTML語法中表示注釋,當(dāng)WEB服務(wù)器不支持SSI時侈离,會忽略這些信息试幽。
2.#include 為SSI指令之一。
3.file 為include的參數(shù), info.htm為參數(shù)值霍狰,在本指令中指將要包含的文檔名抡草。
注意:
1.“”是HTML語法中表示注釋,當(dāng)WEB服務(wù)器不支持SSI時蔗坯,會忽略這些信息康震。
2.上面的標(biāo)點="",一個也不能少宾濒。
3.SSI指令是大小寫敏感的腿短,因此參數(shù)必須是小寫才會起作用。詳細(xì)可以查看SHTML詳細(xì)教程 ,通過SHTML可以減輕許多工作負(fù)擔(dān)哦橘忱。另外:shtml文件在網(wǎng)頁服務(wù)器下運行才有效赴魁,直接用ie打開將被當(dāng)作是文本文件。