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

相关条目[ ]

参考来源[ ]