About Me

我的相片
Taipei<->HsinChu, Taiwan
我是 Mashi,叫我 媽許、罵許,我都會回頭XD
2007年12月10日 星期一

[Hacker] SHTML - SSI 技術

SHTML說明由任搏軟 @ cnblogs轉錄,特此感謝。

使用SSI (Server Side Include)技術

想要找到既富有創意的平面設計人員,又有腳本開發經驗的人員,實在是太難了。而如果一個百分之百的頁面都是php腳本的網站,將為頁面維護帶來非常大的困難。而且使用了php的自動加頭和加尾的方法,使得幾乎所有頁面都是語義不完整的,不能借助任何一款頁面設計工具工作,是另一個弊病。

利用SSI技術,可以有效的將HTML網頁和CGI腳本邏輯上分開,也可以將重複的HTML元素抽象和獨立出來,減輕維護負擔。

Basic SSI directives Syntax

<!--#element attribute=value attribute=value ... -->

插入程式碼
<!--#exec cmd="ls"-->

Today's date
<!--#config timefmt="%Y/%m/%d %a %H:%M:%S" -->
Today is <!--#echo var="DATE_LOCAL" -->

*

Modification date of the file

This document last modified <!--#flastmod file="index.html" -->

*

Including the results of a CGI program

<!--#include virtual="/cgi-bin/counter.pl" -->
<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->

You can use "#exec cgi=" directive, but it can be disabled using the IncludesNOEXEC Option.
*

Including a standard footer

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

*

Executing commands

<!--#exec cmd="ls" -->

This feature is dangerous. You can allow SSI, but not the exec feature, with the IncludesNOEXEC argument to the Options directive.
*

Setting variables

<!--#set var="modified" value="$LAST_MODIFIED" -->
<!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" -->

*

Conditional expressions

<!--#if expr="test_condition" -->
<!--#elif expr="test_condition" -->
<!--#else -->
<!--#endif -->

1、Config命令

  Config命令主要用於修改SSI的默認設置。其中:

  Errmsg:設置默認錯誤信息。為了能夠正常的返回用戶設定的錯誤信息,在HTML文件中Errmsg參數必須被放置在其它SSI命令的前面,否則客戶端只能顯示默認的錯誤信息,而不是由用戶設定的自定義信息。

    <!--#config errmsg="Error! Please email webmaster@mydomain.com -->

  Timefmt:定義日期和時間的使用格式。Timefmt參數必須在echo命令之前使用。

    <!--#config timefmt="%A, %B %d, %Y"-->
    <!--#echo var="LAST_MODIFIED" -->

  顯示結果為:

    Wednesday, April 12, 2000

  也許用戶對上例中所使用的%A %B %d感到很陌生,下面我們就以表格的形式總結一下SSI中較為常用的一些日期和時間格式。 www.domain.com

  Sizefmt:決定文件大小是以字節、千字節還是兆字節為單位表示。如果以字節為單位,參數值為"bytes";對於千字節和兆字節可以使用縮寫形式。同樣,sizefmt參數必須放在fsize命令的前面才能使用。

    <!--#config sizefmt="bytes" -->
    <!--#fsize file="index.html" -->

  2、Include命令

  Include命令可以把其它文檔中的文字或圖片插入到當前被解析的文檔中,這是整個SSI的關鍵所在。通過Include命令只需要改動一個文件就可以瞬間更新整個站點!

  Include命令具有兩個不同的參數:

  Virtual:給出到服務器端某個文檔的虛擬路徑。例如:

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

  File:給出到當前目錄的相對路徑,其中不能使用"../",也不能使用絕對路徑。例如:

    <!--#include file="header.html" -->

  這就要求每一個目錄中都包含一個header.html文件。

  3、Echo命令

  Echo命令可以顯示以下各環境變量:

  DOCUMENT_NAME:顯示當前文檔的名稱。

    <!--#echo var="DOCUMENT_NAME" -->

顯示結果為:

    index.html

  DOCUMENT_URI:顯示當前文檔的虛擬路徑。例如:

    <!--#echo var="DOCUMENT_URI" -->

  顯示結果為:

    /YourDirectory/YourFilename.html

  隨著網站的不斷發展,那些越來越長的URL地址肯定會讓人頭疼。如果使用SSI,一切就會迎刃而解。

另外一個關於apache中ssi技術的教程可以查閱:

Apache指南:服務器端包含入門
http://www.kreny.com/doc/apache2.0/howto/ssi.html

參考網頁

http://www.worldhello.net/doc/website_howto/ssi.html

http://www.7880.com/Info/Article-2f11dda0.html

http://www.carleton.ca/~dmcfet/html/ssi.html

http://www.dizign.de/ssi/

0 意見:

 
Blogger Template Layout Design by [ METAMUSE ] : Code Name BlackCat 2.0.0