电脑技术学习

shtml技术:什么是.shtml页面?

dn001
3、Echo命令

Echo命令可以显示以下各环境变量:

DOCUMENT_NAME:显示当前文档的名称。

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

显示结果为:

index.html

DOCUMENT_URI:显示当前文档的虚拟路径。例如:

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

显示结果为:

/YourDirectory/YourFilename.html

随着网站的不断发展,那些越来越长的URL地址肯定会让人头疼。如果使用SSI,一切就会迎刃而解。因为我们可以把网站的域名和SSI命令结合在一起显示完整的URL,即:

http://yourdomain<!--#echo var="DOCUMENT_URI" -->

QUERY_STRING_UNESCAPED:显示未经转义处理的由客户端发送的查询字串,其中所有的特殊字符前面都有转义符""。例如:

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

DATE_LOCAL:显示服务器设定时区的日期和时间。用户可以结合config命令的timefmt参数,定制输出信息。例如:

<!--#config timefmt="%A, the %d of %B, in the year %Y" -->
 <!--#echo var="DATE_LOCAL" -->

显示结果为:

Saturday, the 15 of April, in the year 2000

DATE_GMT:功能与DATE_LOCAL一样,只不过返回的是以格林尼治标准时间为基准的日期。例如:

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

LAST_MODIFIED:显示当前文档的最后更新时间。同样,这是SSI中非常实用的一个功能,只要在HTML文档中加入以下这行简单的文字,就可以在页面上动态的显示更新时间。

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

CGI环境变量

除了SSI环境变量之外,echo命令还可以显示以下CGI环境变量:

SERVER_SOFTWARE:显示服务器软件的名称和版本。例如:
    <!--#echo var="SERVER_SOFTWARE" -->
    SERVER_NAME: 显示服务器的主机名称,DNS别名或IP地址。例如:
    <!--#echo var="SERVER_NAME" -->
    SERVER_PROTOCOL:显示客户端请求所使用的协议名称和版本,如HTTP/1.0。例如:
    <!--#echo var="SERVER_PROTOCOL" -->
    SERVER_PORT:显示服务器的响应端口。例如:
    <!--#echo var="SERVER_PORT" -->
    REQUEST_METHOD:显示客户端的文档请求方法,包括GET, HEAD, 和POST。例如:
    <!--#echo var="REQUEST_METHOD" -->
    REMOTE_HOST:显示发出请求信息的客户端主机名称。
    <!--#echo var="REMOTE_HOST" -->
    REMOTE_ADDR:显示发出请求信息的客户端IP地址。
    <!--#echo var="REMOTE_ADDR" -->
    AUTH_TYPE:显示用户身份的验证方法。
    <!--#echo var="AUTH_TYPE" -->
    REMOTE_USER:显示访问受保护页面的用户所使用的帐号名称。
    <!--#echo var="REMOTE_USER" -->
4、Fsize:显示指定文件的大小,可以结合config命令的sizefmt参数定制输出格式。

<!--#fsize file="index_working.html" -->

5、Flastmod:显示指定文件的最后修改日期,可以结合config 命令的timefmt参数控制输出格式。

<!--#config timefmt="%A, the %d of %B, in the year %Y" -->
    <!--#flastmod file="file.html" -->

这里,我们可以利用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" -->
  显示结果为:
    File April 19, 2000
    Another File January 08, 2000

6、Exec

Exec命令可以执行CGI脚本或者shell命令。使用方法如下:

Cmd:使用/bin/sh执行指定的字串。如果SSI使用了IncludesNOEXEC选项,则该命令将被屏蔽。

Cgi:可以用来执行CGI脚本。例如,下面这个例子中使用服务端cgi-bin目录下的counter.pl脚本程序在每个页面放置一个计数器:

<!--#exec cgi="/cgi-bin/counter.pl" -->

在CMSware中用途:
可以把网站中一些公共区域做成独立的页面,然后利用此技术嵌入到其它需要此区域内容的页面中去。

机制:
SSI机制是动态包含,而不是静态生成,是由web服务器比如apache在收到用户的请求时,如果解析到其中有SSI包含指令时,自动取出被包含的页面嵌入到被请求的页面中一起当做一个整体的页面发送给用户,对用户来说根本不知道服务器做了啥,只是知道得到一个完整的页面。

好处:
由SSI工作机制我们知道,包含动作是在每次用户请求页面时发生,所以如果被包含的页面内容有变化,也能实时的反应出来,正因为如此,就很容易用来实现静态页面的动态嵌入,我们就可以用来实现网站中全站公共区域,或是出现很多的重复区域内容发布成一个独立静态页面,然后在需要的地方用SSI指令包含进去,比如象全站的头部和尾部,全站最新新闻,最热排行榜等等。此技术广泛被大多门户网站使用,如163,sina等。

最热内容实现方法:
首先配置好SSI环境(参考其它SSI配置教程)
然后建立一个独立的结点
新建一个附加发布或文章页,绑定调用最热内容的小模板,同时指定一个路径和文件名
然后发布成一个静态html页面/hot.html
然后在网站首页留出来的放最热内容的框中写以下SSI指令
<!--#include virtual="/hot.html" -->
把首页发布的扩展名改为index.shtml(服务器配置中目录默认文档页面也要加上shtml类型)
这样用/index.shtml就可以看到效果了,以后每次增加完一堆文章后,只需要更新一下这个hot.html就可以了,首页都不用更新

这种方法甚至可以把首页中的栏目列表区块都做成这种形式,利用每个结点的附加发布功能就可以在发布栏目首页的同时,再多附加发布一个此结点的内容列表的小页面,然后在首页上用SSI指令嵌入进去,以后更新栏目内容和栏目附加发布页就可以了,而首页根本不用随时刷新了!