一、什么是 SSI
SSI(Server Side Include)通常称为“服务端嵌入”或“服务端包含”,即在服务端加载的指令。在页面内容发送到浏览器前,可使用SSI指令将文本图片或应用程序动态包含到网页中。
注意:内容都是在服务器端组装的,一般请求回来的html 和你写的可能会有一些区别,引入的页面片内容会插入,控制样式时间的也是服务器的时间等。
二、常用场景
1.Hml页面引入css页面片,重构和前端更新互不影响
<!--#include virtual="/sinclude/cssi/h5/1111/wx_mall/popup.shtml" -->
2.Hml页面引入js页面片,内容和逻辑完全分离易维护
<!--#include virtual="/sinclude/jsi/wg.market.prelive1611.shtml"-->
3.网站公用底部或头部页面片,不用重复拷贝,更新方便
<!--#include virtual="/sinclude/common/foot.shtml" -->
4.网页的样式在10/26-11/11是一个样式,其他时间另一样式(或按星期日期分钟等等个性定制)
<!--#config timefmt="%D"-->
<!--#if expr="$DATE_LOCAL=/(((10)\/((2[1-9])|3[0-1]))|((11)\/((0[1-9])|11)))/"-->
<!--#include virtual="/sinclude/cssi/h5/1111/coupon_center1111/coupon_center_v2.shtml" -->
<!--#else-->
<!--#endif -->
5.打印网页的当前日期或时间等
<!--#config timefmt="%D"-->
<!--#echo var="DATE_LOCAL"-->
三、基础指令
1.#include 将文本文件的内容直接插到文档页面中
<!--#include file="包含文件相对于本文档的位置"-->
<!--#include virtual="相对于服务器文档根目录的位置"-->
2.#echo 将环境变量插入页面中`
<!--#echo var="变量名称"-->
<!--本文档名称-->
<!--#echo var="DOCUMENT_NAME"-->
<!--时间-->
<!--#echo var="DATE_LOCAL"-->
<!--IP地址-->
<!--#echo var="REMOTE_ADDR"-->
3.#config 用于修改SSI的默认设置
<!--#config errmsg="自定义错误信息"-->
<!--#config sizefmt="显示单位"-->
<!--#config timefmt="显示格式"-->
4.#flastmod文件更新日期 和 #fsize 文件的长度
<!--#flastmod file="文件名称"-->
<!--#fsize file="文件名称"-->
<!--#flastmod virtual="文件名称"-->
<!--#fsize virtual="文件名称"-->
5.#exec 可以执行CGI脚本或者shell命令
<!--将会显示密码文件-->
<!--#exec cmd="cat /etc/passwd"-->
<!--将会显示当前目录下文件列表-->
<!--#exec cmd="dir /b"-->
<!--将会执行CGI程序gb.cgi-->
<!--#exec cgi="/cgi-bin/gb.cgi"-->
<!--将会执行CGI程序access_log.cgi-->
<!--#exec cgi="/cgi-bin/access_log.cgi"-->
四、 XSSI指令
1.#printenv 显示当前存在于WEB服务器环境中的所有环境变量
2.#set 可给变量赋值,以用于后面的if语句。
<!--#set var="变量名"value="变量值"-->
<!--#set var="变量名"value="变量值"-->
3.#if 创建可以改变数据的页面,数据根据使用if语句时计算的要求予以显示。
<!--#if expr="$变量名=\"变量值A\""-->
<!--显示内容-->
<!--#elif expr="$变量名=\"变量值B\""-->
<!--显示内容-->
<!--#else-->
<!--显示内容-->
<!--#endif"-->
<!--#if expr="$变量名=\"变量值A\""-->
五、附录
DOCUMENT_URI /v2/html/ssitest.shtml
DATE_LOCAL Thursday, 06-Mar-2014 17:04:27 CST
DOCUMENT_NAME (none)
QUERY_STRING_UNESCAPED (none)
DATE_GMT Thursday, 06-Mar-2014 09:04:27 GMT
SERVER_SOFTWARE (none)
SERVER_NAME wo.paipai.com
SERVER_PROTOCOL HTTP/1.1
SERVER_PORT 80
REQUEST_METHOD GET
REMOTE_HOST (none)
REMOTE_ADDR 10.28.68.116
AUTH_TYPE (none)
REMOTE_USER (none)
HTTP_HOST vip.paipai.com
LAST_MODIFIED (none)
HTTP_REFERER (none)
HTTP_USER_AGENT Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36
QUERY_STRING a=1
REMOTE_HOST (none)
SCRIPT_FILENAME (none)
REQUEST_URI /v2/html/ssitest.shtml?a=1
%a 一周七天的缩写形式 Thu
%A 一周七天 Thursday
%b 月的缩写形式 Apr
%B 月 April
%d 一个月内的第几天 13
%D mm/dd/yy日期格式 04/13/00
%H 小时(24小时制,从00到23) 01
%I 小时(12小时制,从00到11) 01
%j 一年内的第几天,从01到365 104
%m 一年内的第几个月,从01到12 04
%M 一小时内的第几分钟,从00到59 10
%p AM或PM AM
%r 12小时制的当地时间,格式为 01:10:18 AM
%S 一分钟内的第几秒,从00到59 18
%T 24小时制的%H:%M:%S时间格式 01:10:18
%U 一年内的第几个星期,从00到52,以星期天作为每个星期的第一天
%w 一星期内的第一天,从0到6 4
%W 一年内的第几个星期,从00到 53,以星期一作为每个星期的第一天
%y 年的缩写形式,从00到99 00
%Y 用四位数字表示一年 2000
%Z 时区名称 MDT