SSI指令教程
一:概述
SSI:服务器端嵌入或者叫服务器端包含,是Server Side Include的简写。SSI技术通过在文档中加入SSI指令,让服务器端在输出文档之前解析SSI指令,并把解析完的结果和文档一同输出给客户端。
SSI的指令格式为:<!-- #directive parameter="value" -->
其中,directive是指令名,parameter指令参数,value指令参数值
可以看到,就是html注释,事实上,Web服务器开启了SSI,并且页面包含可以解析的指令,那么Web服务器就解析这个指令。没开启器SSI或者开启了SSI,但是不是可以解析的指令,那么都当做注释。
注意的是,“#”要和directive连在一起,中间不能含有空格
SSI包含的指令有
config:修改 SSI 的默认设置
echo:显示环境变量
exec:执行 CGI 脚本
flastmod :显示指定文件的最后修改日期
fsize:显示指定文件的大小
include:把其它文档插入到当前被解析的文档中
二:准备工作
新建一个站点,站点路径为C:\inetpub\wwwroot\ssitutorial,网站名称为localhost8585,端口为8585

在站点目录放一个html文件,名为index.html,首先没开启SSI时,测试使用SSI指令是否有效果
html文件内容如下
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head> <body>
<p>Date = <!--#echo var = "date_local" --></p>
</body> </html>
使用了echo指令,显示当前时间
浏览http://localhost:8585/index.html,查看效果

可以看到”Date=“后面并没显示当前时间,说明没开启SSI,指令只是作为注释
下面,开启SSI
在IIS选中站点localhost8585,选择”处理程序映射“

进入”处理程序映射“后,选择操作中的”添加模块映射“

弹出”添加模块映射“窗口,在窗口指定解析html文件

点确定后,可以看到,在”处理程序映射“多了一项,同时,在站点目录下,也就是C:\inetpub\wwwroot\ssitutorial生成了一个web.config文件
”处理程序映射“

web.config文件

web.config的内容如下

设置后之后,测试下SSI是否成功,刷新http://localhost:8585/index.html,查看效果

可以看到,”Date=”后面显示日期,说明SSI指令生效了
三:SSI各个指令的用法
3.1 config:修改 SSI 的默认设置,参数:
errmsg:自定义的SSI执行错误信息;
timefmt:定义日期和时间的格式;
sizefmt:决定文件大小是以字节、千字节为单位表示
errmsg参数:自定义的SSI执行错误信息,必须放在其它指令前,才能显示自定义的错误信息
例如:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head> <body> <!-- #config errmsg="这是自定义错误信息"-->
<p>File Size = <!--#fsize file="filename.txt"--> bytes</p> </body> </html>
这里的filename.txt并不存在,所以执行会出错,那么就显示自定义错误信息了,如下图

timefmt参数:定义日期和时间的格式
<!-- #config timefmt="%y年%m月%d日"-->
<p>Date = <!--#echo var = "date_local" --></p>

sizefmt:决定文件大小是以字节(bytes)、千字节(abbrev)为单位表示
比如,有一个文件a.exe,大小为48,594,944字节,使用不同单位
<!--#config sizefmt="bytes"-->
<p><!--#fsize file="a.exe"--> bytes</p> <!--#config sizefmt="abbrev"-->
<p><!--#fsize file="a.exe"--> kb</p>
显示如下

算一下,结果是正确的
3.2 echo:显示环境变量
<p>请求方式= <!-- #echo var = "HTTP_METHOD" --></p>
这里显示请求方式

完整的环境变量,可以在点这里查询
3.3 exec:执行 CGI 脚本
首先需要得到CGI程序,用控制台做一个CGI程序,名为CgiDemo
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks; namespace CgiDemo
{
class Program
{
static void Main(string[] args)
{
Console.Write("Content-Type: text/html\n\n");
Console.Write("<p>Path:" +System.Environment.GetEnvironmentVariable("PATH_TRANSLATED") +"</p>");
} // End of Main().
}
}
输出CGI程序的服务器路径
然后,使用exec执行CGI
<pre><!--#exec cgi = "/cgi-bin/cgidemo.exe" --></pre>
接着访问上面html的地址http://localhost:8585/index.html,出现下面这种情况

说明服务器还要做一些配置。首先,在站点localhost8585—>处理程序映射—>添加模块映射
配置CGI模块

再然后,在 服务器 (不是站点)下找到”ISAPI和CGI限制”

添加刚才那个CGI

再次访问http://localhost:8585/index.html,得到如下结果

说明成功执行CGI程序
3.4 flastmod :显示指定文件的最后修改日期
<!-- #config timefmt="%y年%m月%d日"-->
<pre> <!-- #flastmod file = "a.exe" --></pre>
得到如下结果

a.exe的信息如下

说明是正确的
3.5 fsize:显示指定文件的大小
<!--#config sizefmt="bytes"-->
<p><!--#fsize file="a.exe"--> bytes</p>
得到如下结果

a.exe大小信息如下

说明也是正确的
3.6 include:把其它文档插入到当前被解析的文档中
在index.html所在目录建一个inc.htm文件,文件内容如下
<h2>这是include文件内容</h2>
在index.html包含inc.html
<body> <!--#include file="inc.htm"--> </body>
访问http://localhost:8585/index.html,得到如下结果

可见,inc.htm里的内容被包含进来
另外,如果被包含文件中含有SSI指令,也会解析SSI指令
SSI指令教程的更多相关文章
- SSI指令
1.SSI定义 SSI是英文Server Side Includes的缩写, 即“服务器端包含”或“服务器端嵌入”技术. SSI在HTML文件中,可以通过注释行调用的命令或指针,是一种基于服务器端的网 ...
- ARM指令教程
ARM指令教程 ARM汇编程序特点: l 所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理 ...
- SSI指令使用详解(转)
什么是 SHTML使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为“服务器端嵌入”或者叫“服务器端包含”,是一种类似 ...
- SSI注入--嵌入HTML页面中的指令,类似jsp、asp对现有HTML页面增加动态生成内容,见后面例子
SSI注入漏洞总结 from:https://www.mi1k7ea.com/2019/09/28/SSI%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E%E6%80%BB%E ...
- Nginx配置SSI
一.什么是SSISSI:Server Side Include,是一种基于服务端的网页制作技术,大多数(尤其是基于Unix平台)的web服务器如Netscape Enterprise Server等均 ...
- tomcat 支持ssi功能配置
1.SSI是Server Side Includes 的缩写,是嵌入到HTML页面的一组指令的集合.在返回请求的页面(包含SSI指令前),服务器会处理这些指令,并用处理的结果替换指令,然后把页面返回. ...
- Apache Tomcat关于shtml和SSI技术
Tomcat http://blog.csdn.net/leftfist/article/details/8520773 http://webdevelop.jzxue.com/shtml/ http ...
- SSI
一.简介 SSI(Server Side Includes)技术,是为WEB服务器提供的一套命令,在HTML文档中通过注释行调用的命令或指针,就可以将文本.图形或应用程序信息包含到网页中. SSI具备 ...
- nginx ssi 配置小细节(一)
最近工作需要使用nginx的ssi (server side include)技术,在这里,将使用中的一点心得分享一下,也是一种备忘! 首先,nginx的ssi启用很简单,就只有三个最基本的指令: s ...
随机推荐
- JQuery EasyUI之DataGrid列名和数据列分别设置不同对齐方式(转)
需求如下 现有数据列三列 Name,Age,CreateDate 数据 张三,18,2000-12-09 :12:34:56 李四,28,2000-12-09 :12:34:56 王麻子,38,200 ...
- 【Android - 框架】之ButterKnife的使用
ButterKnife可以省去控件findViewById的步骤,提高开发效率. 用法: 1.添加依赖: compile 'com.jakewharton:butterknife:5.1.1' 2.在 ...
- Android-自己定义图像资源的使用(1)
Android-自己定义图像资源的使用 2014年4月28日 周一 天气晴朗 心情平静 本篇博文给大家介绍一下,在Android开发中经经常使用到的一些图像资源,具体内容麻烦请各位认真查看官网,下面附 ...
- android 11 模拟onclick 事件
package com.sxt.callback; public class Button { //预存一段按钮点击的响应代码 private OnclickListener mOnClickList ...
- iOS--为视图添加阴影
iOS–为视图添加阴影 情况一:视图添加圆角,在添加阴影 //阴影视图 self.viewShadow = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ...
- Execution Contexts (执行上下文)
本章我们一起讨论一下ECMAScript的执行上下文及相关可执行代码的各种类型.so...什么是执行上下文?我们来看看定义: 每次当控制器转到ECMAScript可执行代码的时候, 即会进入到一个执行 ...
- python - 操作RabbitMQ
python - 操作RabbitMQ 介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.MQ全称为Mess ...
- maven jetty运行命令
1.先运行build.xml <?xml version="1.0" encoding="UTF-8"?> <project name=&qu ...
- java异常类的使用
1.异常的概念 什么是异常?程序出错分为两部分,编译时出粗和运行时出错.编译时出错是编译器在编译源码时发生的错误: 运行时出错是在编译通过,在运行时出现的错误.这种情况叫异常. 例如:数组越界,除数为 ...
- jQuery AJAX实现调用页面后台方法
1.新建demo.aspx页面.2.首先在该页面的后台文件demos.aspx.cs中添加引用. using System.Web.Services; 3.无参数的方法调用. 大家注意了,这个版本不能 ...