SSI
SSI(Server SideInc lude),通常称为服务器端嵌入,是一种类似于ASP的基于服务器的网页制作技术。大多数(尤其是基于Unix平台)的WEB服务器如Netscape Enterprise Server等均支持SSI命令。
SSI工作原理[ ]
- 将内容发送到浏览器之前,可以使用“服务器端包含(SSI)”指令将文本、图形或应用程序信息包含到网页中。例如,可以使用SSI包含时间/日期戳、版权声明或供客户填写并返回的表单。对于在多个文件中重复出现的文本或图形,使用包含文件是一种简便的方法。
- 将内容存入一个包含文件中即可,而不必将内容输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示Web服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。
- 因为包含SSI指令的文件要求特殊处理,所以必须为所有SSI文件赋予SSI文件扩展名。默认扩展名是.stm、.shtm和.shtml。
SSI功能[ ]
- shtml—server—parsedHTML的首字母缩略词。包含有嵌入式服务器方包含命令的HTML文本。在被传送给浏览器之前,服务器会对SHTML文档进行完全地读取、分析以及修改。
- shtml和asp有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来。
- 可以在SHTML文件中用SSI指令引用其他的html文件(#include),服务器传送给客户端的文件,是已经解释的SHTML不会有SSI指令。它实现了HTML所没有的功能,就是可以实现了动态的SHTML,可以说是HTML的一种进化吧。像新浪的新闻系统就是这样的,新闻内容是固定的但它上面的广告和菜单等就是用#include引用进来的。
SSI用途[ ]
- 显示服务器端环境变量
- 将文本内容直接插入到文档中
- 显示WEB文档相关信息(如文件制作日期/大小等)
- 直接执行服务器上的各种程序(如CGI或其他可执行程序)
- 设置SSI信息显示格式(如文件制作日期/大小显示方式)高级SSI可设置变量使用if条件语句。
SSI使用方法[ ]
- SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。例如,就是一条SSI指令,其作用是将"info.htm"的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。其它的SSI指令使用形式基本同刚才的举例差不多,可见SSI使用只是插入一点代码而已,使用形式非常简单。如果WEB服务器不支持SSI,它就会只不过将它当作注释信息,直接跳过其中的内容;浏览器也会忽略这些信息。
- 在一些WEB服务器上(如IIS4.0/SAMBAR4.2),包含#include指令的文件必须使用已被映射到SSI解释程序的扩展名;否则,Web服务器将不会处理该SSI指令;默认情况下,扩展名.stm、.shtm和.shtml被映射到解释程序(Ssinc.dll)。
- Apache则是根据你的设置情况而定,修改srm.conf如:AddTypetext/x-server-parsed-html.shtml将只对.shtml扩展名的文件解析SSI指令AddTypetext/x-server-parsed-html.html将对所有HTML文档解析SSI指令NetscapeWEB服务器直接使用AdministrationServer(管理服务器)可打开SSI功能。Website使用ServerAdmin程序中的Mapping标签,扩展名添加内容类型为:wwwserver/html-ssiCern服务器不支持SSI,可用SSI诈骗法,到http://sw.cse.bris.ac.uk/webtools/fakessi.html 上下载一个PERL脚本,即可使你的CERN服务器使用一些SSI指令。(不支持exec指令)
SSI指令格式[ ]
格式
- <!--是HTML语法中表示注释,当WEB服务器不支持SSI时,会忽略这些信息。
- #include为SSI指令之一。
- file为include的参数,info.htm为参数值,在本指令中指将要包含的文档名。
注意
- <!--与#号间无空格,只有SSI指令与参数间存在空格。
- 上面的标点=" ",一个也不能少。
- SSI指令是大小写敏感的,因此参数必须是小写才会起作用。
- file文件名是一个相对路径,该路径相对于使用#include指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目录下的的nav_head.htm文档,则为file="nav_head.htm"。
- virtual文件名是Web站点上的虚拟目录的完整路径。如表示相对于服务器文档根目录下hoyi目录下的nav_head.htm文件;则为file="/hoyi/nav_head.htm"
参数:
- file指定包含文件相对于本文档的位置
- virtual指定相对于服务器文档根目录的位置
注意:
- 文件名称必须带有扩展名。
- 被包含的文件可以具有任何文件扩展名,直接使用htm扩展名最方便,微软公司推荐使用.inc扩展名。
SSI Config命令[ ]
Config命令主要用于修改SSI的默认设置。其中:Errmsg:设置默认错误信息。为了能够正常的返回用户设定的错误信息,在HTML文件中Errmsg参数必须被放置在其它SSI命令的前面,否则客户端只能显示默认的错误信息,而不是由用户设定的自定义信息。
Timefmt:定义日期和时间的使用格式。Timefmt参数必须在echo命令之前使用。
<!--#config timefmt=“%A,%B,%d,%Y”-->
<!--#echo var=“LAST_MODIFIED”-->
显示结果为:Wednesday,April12,2000
也许用户对上例中所使用的%A%B%d感到很陌生,下面我们就以表格的形式总结一下SSI中较为常用的一些日期和时间格式。
Sizefmt:决定文件大小是以字节、千字节还是兆字节为单位表示。如果以字节为单位,参数值为"bytes";对于千字节和兆字节可以使用缩写形式。同样,sizefmt参数必须放在fsize命令的前面才能使用。
SSI环境变量[ ]
除了SSI环境变量之外,echo命令还可以显示以下CGI环境变量:
- SERVER_SOFTWARE:显示服务器软件的名称和版本。例如:<!--#echo var=“SERVER_SOFTWARE”--></nowiki>
- SERVER_NAME:显示服务器的主机名称,DNS别名或IP地址。例如<!--#echo var=“SERVER_NAME”--></nowiki>
- SERVER_PROTOCOL:显示客户端请求所使用的协议名称和版本,如HTTP/1.0。例如:<!--#echo var=“SERVER_PROTOCOL”-->
利用flastmod参数显示出一个页面上所有链接页面的更新日期。方法如下:
<!--#config timefmt=“%B,%d,%Y”-->
<A HREF=“/directory/file.html”>File</A>
<!--#flastmod virtual=“/directory/file.html”-->
<A HREF=“/another_directory/another_file.html”>Another File</A>
<!--#flastmod virtual=“/another_directory/another_file.html”-->
显示结果为:
FileApril19,2000
Another File January08,2000