SHTML文件介绍
  TEZNKK3IfmPf 12天前 24 0

SHTML文件介绍

什么是SHTML文件?

SHTML文件(以.shtml文件扩展名的文件)和HTML文件差不多,都是网页文件,只是SHTML文件中有服务器端包含(server-side includes,SSI)指令。它在发送到用户浏览器之前由web服务器进行处理(或解析)——把SHTML文件中包含的SSI指令解释出来,服务器传送给客户端的文件,是已经解释的SHTML,不会有SSI指令——它实现了HTML所没有的功能。

Web 服务器在处理网页的同时处理 SSI 指令。当 Web 服务器(目前最主流的三个Web服务器是Apache、 Nginx 、IIS)遇到 SSI 指令时,直接将包含文件的内容插入 HTML 网页。如果“包含文件”中包含 SSI 指令,则同时插入此文件。除了用于包含文件的基本指令之外,还可以使用 SSI 指令插入文件的相关信息(如文件的大小)或者运行应用程序或 shell 命令。

网站维护常常碰到的一个问题是,网站的结构已经固定,却为了更新一点内容而不得不重做一大批网页。SSI提供了一种简单、有效的方法来解决这一问题,它将一个网站的基本结构放在几个简单的HTML文件中(模板),以后我们要做的只是将文本传到服务器,让程序按照模板自动生成网页,从而使管理大型网站变得容易。

SSI是为WEB服务器提供的一套命令,如:

<!--#include file="info.htm"-->

就是一条SSI指令,其作用是将"info.htm"的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。

其它的SSI指令使用形式基本同刚才的举例差不多,可见SSI使用只是插入一点代码而已,使用形式非常简单。

说明:

<!-- -->是HTML语法中表示注释,当WEB服务器不支持SSI时,会忽略这些信息。

#include 为SSI指令之一。

file 为include的参数, info.htm为参数值,在本指令中指将要包含的文档名。

注意:<!--与#号间无空格,只有SSI指令与参数间存在空格,SSI指令是大小写敏感的。

SSI常用指令

#echo 作用:

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

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

如:

本文档名称:程序代码:

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

当前时间:程序代码:

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

你的IP地址是程序代码:

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

#include 作用:

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

语法:

<!--#include file="文件名称"-->

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

其中

file 指定包含文件相对于本文档的位置

virtual 指定相对于服务器文档根目录的位置

补充:#include file 和 #include virtual的区别

1、#include file 包含文件的相对路径,#include virtual包含文件的虚拟路径。

2、在同一个虚拟目录内,<!--#include file="file.asp"-->和<!--#include virtual="file.asp"-->效果是相同的,但假设虚拟目录名为myweb,则<!--#include virtual="myweb/file.asp"-->也可以通过调试,但我们知道<!--#include file="myweb/file.asp"-->是绝对要报错的

#flastmod 和#fsize 作用:

前者#flastmod 文件最后一次更新日期

后者#fsize 文件的长度

如:

<!--#flastmod file="news.htm"-->

将当前目录下news.htm文件的最后一次更新日期插入到当前页面

<!--#fsize file="news.htm"-->

将当前目录下news.htm的文件大小入到当前页面

#config的作用:

主要用于修改SSI的默认设置,如用 timefmt参数定义日期和时间的使用格式:
<!--#config timefmt="%Y-%m-%d %H:%M"-->
其中,星期%A,月%B,日%d,年%Y,时%H,分%M
 

#exec作用:

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

语法:

<!--#exec cmd="文件名称"-->

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

其中

cmd 常规应用程序

cgi CGI脚本程序

如:

<!--#exec cmd="dir /b"-->

将会显示当前目录下文件列表

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

将会执行CGI程序gb.cgi。

特别提示,指令相当方便,但是也存在安全问题。

禁止(屏蔽)方法:

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

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

SHTML文件简单例子

<html>
<head>
<meta charset="utf-8">
<title>SSI example</title>
</head>
<body>
<h2>新闻</h2>
<p><!--#include file="news.txt"--></p>
<p>最后一次更新更新日期:<!--#flastmod file="news.txt" --></p>
<!--#config timefmt="%Y-%m-%d %H:%M"-->
<p>最后一次更新更新日期(使用了格式):<!--#config timefmt="%Y-%m-%d %H:%M"-->
<!--#flastmod file="news.txt" --></p>
<p></p>
</body>
</html>

保存文件名为:example.SHTML。

其中news.txt内容你可以随便写。

我这里将example.SHTML和news.txt放到Web 服务器Apache的test2文件夹中,参见下图:

SHTML文件介绍

然后,在浏览器的地址栏中输入http://localhost/test2/example.SHTML,回车,效果如下:

SHTML文件介绍

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 12天前 0

暂无评论

推荐阅读
TEZNKK3IfmPf