« 杀人游戏的四个版本 | Main | 两件事情。 »

SSI简介

Google 的 Reply 中提到的东西,搜索看了一下,原来是知道的:

引用自
什么是SSI?
SSI直译服务器端包含(Server Side Includes),由字面上看由WEB在服务器提供的一种功能,并且是在服务器端进行的。一般说来,要完成较复杂的任务(如:聊天室/留言本等),必须设计专门的CGI或ASP程序;但是如果只是想给网页加上简单的功能(如:显示一篇文档,web服务器环境变量,关于该文档的更新日期/大小等),则只要SSI就可以完成了。SSI则是直接由服务器解释执行的,须要WEB服务器软件支持SSI。
而且,由于直接在服务器端执行SSI,产生相应HTML代码;所以对客户端没有限制,不会产生因为不同浏览器而产生不同的观看效果。

SSI有什么用?
目前,主要有以下几种用用途:
1、 显示服务器端环境变量<#echo>
2、 将文本内容直接插入到文档中<#include>

3、 显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
4、 直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)
5、 设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式)
高级SSI<XSSI>可设置变量使用if条件语句。

使用SSI很容易吧?
SSI是为WEB服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。如:
<!--#include file="info.htm"-->
就是一条SSI指令,其作用是将"info.htm"的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。
其它的SSI指令使用形式基本同刚才的举例差不多,可见SSI使用只是插入一点代码而已,使用形式非常简单。
当然,如果WEB服务器不支持SSI,它就会只不过将它当作注释信息,直接跳过其中的内容;浏览器也会忽略这些信息。

1.#echo 示范

作用:

将环境变量插入到页面中。

语法:

<!--#echo var=”变量名称”-->

示例:

本文档名称:<!--#echo var=”DOCUMENT_NAME”-->

现在时间:<!--#echo var=”DATE_LOCAL”-->
你的IP地址是:<!--#echo var=”REMOTE_ADDR”-->

可在SSI中使用的变量: 1.只有SSI中能使用的变量。2.标准CGI变量3.某些服务器支持的变量

①下面是在标准SSI支持的变量:

----------------------

2、#include 示范

作用:

将文本文件的内容直接插入到文档页面中。

语法:
<!--#include file=”文件名称”-->

<!--#include virtual=”文件名称”-->

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 扩展名(这就看你的爱好了)。

示例:

<!--#include file=”nav_head.htm”-->将头文件插入到当前页面

<!--#include file=”nav_foot.htm”-->将尾文件插入到当前页面
--------------------------
4.#exec 示范

作用:

将某一外部程序的输出插入到页面中。可插入CGI程序或者是常规应用程序的输入,这取决于使用的参数是cmd还是cgi。

语法:

语法:
<!--#exec cmd=”文件名称”-->

<!--#exec cgi=”文件名称”-->

参数:

cmd 常规应用程序

cgi CGI脚本程序

示例:

<!--#exec cmd=”cat /etc/passwd”-->将会显示密码文件

<!--#exec cmd=”dir /b”-->将会显示当前目录下文件列表

 

<!--#exec cgi=”/cgi-bin/gb.cgi”-->将会执行CGI程序gb.cgi。

<!--#exec cgi=”/cgi-bin/access_log.cgi”-->将会执行CGI程序access_log.cgi。

注意:

从上面的示例可以看出,这个指令相当方便,但是也存在安全问题。

禁止方法:

.Apache,将access.conf中的”Options Includes ExecCGI”这行代码删除;

.在IIS中,要禁用 #exec 命令,可修改 SSIExecDisable 元数据库;[/quote]

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on February 17, 2006 4:13 AM.

The previous post in this blog was 杀人游戏的四个版本.

The next post in this blog is 两件事情。.

Many more can be found on the main index page or by looking through the archives.

Creative Commons License
This weblog is licensed under a Creative Commons License.