用shtml來include網頁文件

本文轉自?http://blog.csdn.net/xtra6714/article/details/7097634

在網站構建過中。當我們遇到很多的內容為靜態(tài)頁面,而頁首與頁腳又經常要更換時,如果一直使用html文件總會有很多的麻煩。因為批量修改起來很不方面,所以我們總希望能將頁腳與頁尾include到html文件中來。html屬于客戶端解析形的格式化語言,自4.0后幾乎很難再有大的變動(畢竟很多瀏覽器只按4.0標準來解析),所以至今也沒include這樣的概念。而html的框架(frame與iframe)雖然可以用來包含首頁與頁腳文件,但使用frame與iframe的概念與動態(tài)頁面(asp,jsp,php等)的include那樣不同,frame與iframe的主體頁面與被包括的頁的不是一個頁面,而通過include的方式調用的頁面主體頁面與被包括的頁面仍然是一個頁面,這樣頁面再加載的時就沒速度的影響,更不會有多個窗口這樣的問題。當然frame與iframe的作用還是挺大的,只是這與include這樣包括頁面進來的概念不同。

  除frame與iframe之外,常用的調用文件的方法還有采用js。這與include概念倒是很接近,但可以需要客戶端js的支持,而且修改也不很方面,因為被包括的js是通過document.write來輸出html代碼,這樣雖然能達到效果,可js畢竟執(zhí)行客戶端動態(tài)效果更好,比如現在較流行的AJAX。所以無論是frame/iframe還是js都與include不太一樣(倒是Dreamweaver中的library與include很像,可惜只能用在Dreamweaver中),而我們有時頁面有很多靜態(tài)頁面,內容不是動態(tài)的且沒有規(guī)律可循,更不好做到數據庫里去。如新浪的新聞之類的,這時我們可以采用shtml的方式來做這些頁面。--JarryLi in BeiJing

  那什么是shtml呢?

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

  什么是SSI?

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

  如何使你的Apache服務器支持SSI?

  Apache(如何在windows以及l(fā)inuc下安裝apache請參見另兩篇文章)默認是不支持SSI的,需要我們更改httpd.conf來進行配置。我這里以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的設置。

  如何讓你的IIS服務器支持SSI

  windows 2000:

  IIS里添加一個應用程序擴展名映射

  可執(zhí)行文件:C:\WINDOWS\system32\inetsrv\ssinc.dll

  擴展名:shtml/shtm

  windows 2003 2003默認已經支持SSI(shtml文件),只需在IIS的"Web服務擴展"里設置"在服務器端的包含文件"為"允許" 即可IIS6.0對于SSI進行了一些改進,以前IIS5.0的一些程序遷移過后可能無法運用。

  一個經常的出現問題是出現如下錯誤:

  "處理 SSI 文件時出錯 - Error processing SSI file"

  經過測試,以下做法會導致這個錯誤:

  1、服務器物理路徑使用中文名。

  2、包含文件中使用中文名。

  3、包含文件不存在。

  4、被包含的文件再次包含使用中文名的文件。

  該錯誤在Unicode編碼時依舊,屬于IIS的問題。

  解決方法:對于使用SSI的站點物理和URL地址都全部使用英文。

  shtml文件測試?

  主體文件,比如命名為test.shtml,內容為(把head.html與foot.html文件包進來,與asp,jsp,php中的include相同)

  以下是引用片段:


你好,這是中間的內容

  頁首文件,比如命名為head.html,內容為

  以下是引用片段:

Untitled Document

我是頁首導航欄的公共信息

  頁尾文件,比如命名為foot.html,內容為

  以下是引用片段:

  我是頁尾版權信息

  然后運行web server,在地址欄中打開test.shtml文件,就會得到一個完整的頁面,包括頭與尾文件。

  shtml中簡單的SSI命令

  SSI具有強大的功能,只要使用一條簡單的SSI命令就可以實現整個網站的內容更新,時間和日期的動態(tài)顯示,以及執(zhí)行shell和CGI腳本程序等復雜的功能。比如我們修改上面提及的test.shtml文件,加入以下代碼,將會顯示服務器日期以及客戶端IP等:

  以下是引用片段:

? 本文檔名稱:
?
? 時區(qū):
?
? 你的IP地址是:
?
? 今天是:? ? ?
?

  SSI指令基本格式

  程序代碼:

以下是引用片段:



  說明:

  1.是HTML語法中表示注釋,當WEB服務器不支持SSI時,會忽略這些信息。

  2.#include 為SSI指令之一。

  3.file 為include的參數, info.htm為參數值,在本指令中指將要包含的文檔名。

  注意:

  1.“”是HTML語法中表示注釋,當WEB服務器不支持SSI時,會忽略這些信息。

  2.上面的標點="",一個也不能少。

  3.SSI指令是大小寫敏感的,因此參數必須是小寫才會起作用。詳細可以查看SHTML詳細教程 ,通過SHTML可以減輕許多工作負擔哦。另外:shtml文件在網頁服務器下運行才有效,直接用ie打開將被當作是文本文件。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容