查找资料后自己整理了下,尽量简洁明了,让大家一看就明白。
一、什么是SHTML
SHTML就是嵌入了服务器端命令的HTML,所嵌入的服务器命令就是SSI(SERVER SIDE INCLUDE,服务器端嵌入)。当用户浏览SHTML页面的时候,这些SSI命令会被服务器解析,用户读取的是解析后的XHTML文档,而不会看到服务器端命令。
二、SHTML中嵌入服务器端命令语法
SHTML使用非常简单,就是在HTML页面的注释标签中嵌入进去服务器端命令:
<!--#服务器段命令 命令名称="命令值"-->
注:<!--跟#服务器段命令 没有空格!必要的时候 命令名称="命令值"中 引号需转义/"
三、常用的SHTML
- 显示服务器端环境变量<#echo>
- 将文本内容直接插入到文档中<#include>
- 显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
- 直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)
- 设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式)
<!--#echo var="变量名"-->
<!--#echo var="DOCUMENT_NAME"-->本文档名称
<!--#echo var="DATE_LOCAL"-->现在时间
<!--#echo var="REMOTE_ADDR"-->你的IP地址
<!--#include file="文件名称"-->
<!--#include virtual="文件名称"-->
file指的是相对路径,是相对#include指令的文档所在目录。被包含的文件可以在同一级目录或其子目录中,但不可以在其上一级的目录中。
virtual指的是WEB站点中虚拟目录的完整目录。如根目录为TEXT,被包含文件在TEXT下的INCLUDE下,那么包含的时候就为:virtual="/TEXT/INCLUDE/文件名称"
<!--#flastmod file="文件名"-->文件最后的修改时间
<!--#fsize file="文件名"-->文件的大小
<!--#exec cmd="文件名"-->将程序文件嵌入到HTML文件
<!--#exec cgi="文件名"-->将CGI文件嵌入到HTML文件
cmd 常规应用程序
cgi CGI脚本程序 (一般这个要禁止掉)
<!--#config errmsg="自定义文件错误信息"-->
<!--#config sizefmt="显示单位"-->
<!--#config timefmt="显示格式"-->
errmsg 自定义SSI执行错误信息。
sizefmt 文件大小显示方式,默认为BYTE,可改为千字节abbrev
timefmt 定义显示时间的格式
<!--#config timefmt="%Y年/%m月%d日 星期%W 北京时间%H:%M:%s,%Y年已过去了%j天 今天是%Y年的第%U个星期"-->
<!--#echo var="DATE_LOCAL"--> 显示今天是星期几,几月,时区
<!--#config timefmt="今天%A, %B ,服务器时区是 %z,是"-->
<!--#echo var="DATE_LOCAL"-->
errmsg、sizefmt、timefmt这些配置命令必须在文件头,就是你显示错误信息,文件大小,本地时间之前,否则不起效,跟PHP的INI_SET()配置函数很像,嘿嘿
四、哪些WEB服务器支持SHTML
目前流行的Apache、IIS、NetScape都支持SHTML。
1、apache 中的使用:
其中Apache使用的时候需要配置.conf文件:
AddType text/x-server-parsed-html .shtml 将对.shtml扩展名的文件解析SSI指令
AddType text/x-server-parsed-html .html 将对所有的.html扩展名的文件解析SSI指令
2、IIS 中的使用:
需要把包含SSI指令文档扩展名映射到Ssinc.dll,如:.stm .shtm .shtml
五、注意事项:
在使用XHTML的时候会用到EXEC,其中会用到应用程序脚本,对服务器安全造成隐患,所以需要禁用掉SSI中的EXEC。
Apache 跟 IIS 的使用方法分别为:
Apache : access.conf 文件中删除“Options Includes ExecCGI”
IIS: 修改SSIExecDisable元数据库