目前,主要有以下几种用用途:
1、显示服务器端环境变量
2、将文本内容直接插入到文档中
3、显示WEB文档相关信息(如文件制作日期/大小等)
4、直接执行服务器上的各种程序(如CGI或其他可执行程序)
5、设置SSI信息显示格式(如文件制作日期/大小显示方式) 高级SSI可设置变量使用if条件语句。
SSI有什么用? 之所以要扯到ssi,是因爲shtml--server-parsed HTML 的首字母缩略词。包含有嵌入式服务器方包含命令的 HTML 文本。在被传送给浏览器之前,服务器会对 SHTML 文档进行完全地读取、分析以及修改。
shtml和asp 有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,
服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来比如:你可以在SHTML文件中用SSI指令引用其他的 html文件(#include ),服务器传送给客户端的文件,是已经解释的SHTML不会有SSI指令。它实现了HTML所没有的功能,就是可以实现了动态
的SHTML,可以说是HTML的一种进化吧。像新浪的新闻系统就是这样的,新闻内容是固定的但它上面的广告和菜单等就是用#include引用进来的。
目前,主要有以下几种用用途:
1、显示服务器端环境变量
2、将文本内容直接插入到文档中
3、显示WEB文档相关信息(如文件制作日期/大小等)
4、直接执行服务器上的各种程序(如CGI或其他可执行程序)
5、设置SSI信息显示格式(如文件制作日期/大小显示方式)
高级SSI
使用SSI
SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。如:
就是一条SSI指令,其作用是将"info.htm"的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。
其它的SSI指令使用形式基本同刚才的举例差不多,可见SSI使用只是插入一点代码而已,使用形式非常简单。
当然,如果WEB服务器不支持SSI,它就会只不过将它当作注释信息,直接跳过其中的内容;浏览器也会忽略这些信息。
如何在我的WEB伺服器上設定SSI功能?
在某些WEB伺服器上(如IIS 4.0/SAMBAR 4.2),包含 #include 指令的檔案必須使用已被對應到 SSI 解釋程式的副檔名;否則,Web 伺服器將不會處理該SSI指令;預設值下,副檔名 .stm、.shtm 和 .shtml 被對應到解釋程式(Ssinc.dll)。
Apache則是根據你的設定情況而定,修改srm.conf如:
AddType text/x-server-parsed-html .shtml 將只對.shtml副檔名的檔案解析SSI
AddType text/x-server-parsed-html .html將對所有HTML文件解析SSI指令
Netscape WEB伺服器直接使用Administration Server(管理伺服器)可開啟SSI功能。
Website使用Server Admin程式中的Mapping標籤,副檔名新增內容類型為:wwwserver/html-ssi
Cern伺服器不支援SSI,可用SSI詐騙法,到http://sw.cse.bris. ac.uk/WebTools/fakessi.html 上下載一個PERL腳本,即可讓你的CERN伺服器使用一些SSI指令。 (不支援exec指令。)
SSI指令基本格式
SSI指令基本格式:
程式碼:
#
如
#如
#程式碼:
說明: 1.
是HTML語法中表示註釋,當WEB伺服器不支援SSI時,會忽略這些資訊。
2. #include 為SSI指令之一。
3. file 為include的參數, info.htm為參數值,本指令中指將要包含的文件名稱。
注意:
本文檔名稱:程式碼:
# ## #現在時間:程式碼:
你的IP位址是程式碼:
##include 示範 ## #作用:
將文字檔案的內容直接插入文件頁中。
語法:
程式碼:
file 檔案名稱是相對路徑,路徑相對於使用 #include 指令的文件所在的目錄。被包含檔案可以在同一層級目錄或其子目錄中,但不能在上一層目錄中。如表示目前目錄下的nav_head.htm文檔,則為file="nav_head.htm"。
virtual 檔案名稱是 Web 網站上的虛擬目錄的完整路徑。如表示相對於伺服器文件根目錄下hoyi目錄下的nav_head.htm檔案;則為file="/hoyi/nav_head.htm"
參數:
file 指定包含檔案相對於本文檔的位置 ## #virtual 指定相對於伺服器文件根目錄的位置
注意:
1、檔案名稱必須有副檔名。
2、被包含的檔案可以有任何檔案副檔名,我覺得直接使用htm副檔名最方便,微軟公司推薦使用 .inc 副檔名(這就看你的愛好了)。
範例:
程式碼:
將頭檔插入到目前頁面
將尾檔插入到目前頁面
將頭檔插入目前頁面
將尾檔插入目前頁面 #flastmod 與#fsize 示範
功能: #flastmod 檔案最近更新日期
#fsize 檔案的長度
程式:
程式代碼:
參數:
file 指定包含檔案相對於本文檔的位置 如 info.txt 表示目前目錄下的的info.txt文件
virtual 指定相對於伺服器文件根目錄的位置 如 /hoyi/info.txt 表示
注意:
檔案名稱必須有副檔名。
範例:
程式碼:
將目前目錄下news.htm檔案的最近更新日期插入到目前頁面
程式碼: #
##
將目前目錄下news.htm的檔案大小入到目前頁面
#exec 示範
作用:
將某一外部程式的輸出插入到頁面中。可插入CGI程式或常規應用程式的輸入,這取決於使用的參數是cmd還是cgi。
語法:
程式碼:
參數:
#cmd 常規應用程式
cgi CGI腳本程式
範例:
程式碼:
將會顯示密碼檔案
會顯示目前目錄下檔案清單
#將會執行CGI程序gb.cgi。
將會執行CGI程式access_log.cgi。
將會顯示密碼檔
將會顯示目前目錄下檔案清單
將會執行CGI程式gb.cgi。
將會執行CGI程式access_log.cgi。
注意:
從上面的範例可以看出,這個指令相當方便,但是也有安全問題。
禁止方法:
. Apache,刪除access.conf中的"Options Includes ExecCGI"這行程式碼刪除;
.在IIS中,若要停用 #exec 指令,可修改 SSIExecDisable 元資料庫;
#config
作用: 指定傳回給用戶端瀏覽器的錯誤訊息、日期和檔案大小的格式。
語法:
程式碼:
##
參數:
errmsg 自訂SSI執行錯誤訊息,可以為任何你喜歡的方式。
sizefmt 檔案大小顯示方式,預設為位元組方式("bytes")可以改為千位元組方式("abbrev")
timefmt 時間顯示方式,最靈活的設定屬性。
範例: 顯示一個不存在檔案的大小
程式碼:
以千位元組方式顯示檔案大小
程式碼:
以特定的時間格式顯示時間
程式碼: #
##
顯示今天是星期幾,幾月,時區
# 顯示今天是星期幾,幾月,時區
XSSI
XSSI(Extended SSI)是一組進階SSI指令,內建於Apache 1.2或更高版本的mod-include模組之中。
其中可用的指令有:
#printenv
#set
#if
#printenv
作用: 顯示目前存在於WEB伺服器環境中的所有環境變數。
語法:程式碼:
# 參數:無
範例:
程式碼:
##
#
set