SSI指令
1.SSI定义
SSI是英文Server Side Includes的缩写, 即“服务器端包含”或“服务器端嵌入”技术。
SSI在HTML文件中,可以通过注释行调用的命令或指针,是一种基于服务器端的网页制作技术。shtml文件就是应用了SSI技术的html文件SSI工作原理因为是基于服务器端的网页制作技术,所以在.shtml页面返回到客户端前,页面中的SSI指令将被服务器解析,在给客户端返回的页面中不会包含SSI指令。如果SSI指令不能被解析,则浏览器会将其做为普通的HTML注释处理。
SSI的速度介于类似于.asp与.html之间。比.asp快,但比.html慢。SSI能使页面在维护的时候更简单,维护的效率也更高。
2.SSI指令基本格式
基本格式:<!--指令名称="指令参数">
eg:<!--#include
file="info.htm"-->
说明:
1.<!--
-->是HTML语法中表示注释,当WEB服务器不支持SSI时,会忽略这些信息。
2.#include
为SSI指令之一。
3.file为include的参数,info.htm为参数值,在本指令中指将要包含的文档名。
注意:
1.<!--与#号间无空格,只有SSI指令与参数间存在空格。
2.上面的标点="",一个也不能少。
3.SSI指令是大小写敏感的,因此参数必须是小写才会起作用(经过测试大写也可以)。
3.SSI语法
1、config指令:用于修改SSI的默认设置
参数:errmsg, timefmt, sizefmt
errmsg:设置默认的错误信息,该指令必须入在其它指令的前面
eg:<!--#config
errmsg="error!please email mamager!"-->
Timefmt:设置日期与时间的显示格式,需放在echo指令前
eg:<!--#config timefmt="%A,
%B %d, %Y"-->
<!--#echo
var="last_modified"-->
Sizefmt:设置表示文件大小的单位。如bytes。该指令需要放在fsize指令前使用。
eg:<!--#config
sizefmt="bytes"-->
<!--#fsize file="head.html"-->
2、Include指令:用于将其它文档或元素包含在当前文档中
参数:virtual
,file
virtual:给出到服务器端某个文档的虚拟路径
eg:<!--include
virtual="/includes/header.html"-->
file:给出到当前目录的相对路径,其中不能使用"../",也不能使用绝对路径
eg:<!--include
file="header.html"-->
这就要求每一个目录中都包含一个header.html文件。
3、exec指令:将某一外部程序的输出插入到页面中,执行 CGI 脚本或者 shell 命令
参数:cmd,cgi
cmd 常规应用程序:<!--#exec cmd="文件名称"-->
cgi
CGI脚本程序:<!--#exec cgi="文件名称"-->
注意:这个指令相当方便,但是也存在安全问题。
4、Echo:用于显示各种环境变量
参数:var
eg:<!--#config
timefmt="%A,the %d of %B,in the year %Y"-->
<!--#echo var="DATE_LOCAL"-->
输出结果:Saturday,
the 15 of April, in the year 2000
以下是常见的服务器变量:
DOCUMENT_NAME:显示当前文档的名称
DOCUMENT_URI:显示当前文档的虚拟路径
QUERY_STRING_UNESCAPED:显示未经转义处理的由客户端发送的查询字串,其中所有的特殊字符前面都有转义符"\
DATE_LOCAL:显示服务器设定时区的日期和时间。用户可以结合config命令的timefmt参数,定制输出信息
DATE_GMT:功能与DATE_LOCAL一样,只不过返回的是以格林尼治标准时间为基准的日期
LAST_MODIFIED:显示当前文档的最后更新时间
除了SSI环境变量之外,echo命令还可以显示以下CGI环境变量:
SERVER_SOFTWARE:显示服务器软件的名称和版本
SERVER_NAME:显示服务器的主机名称,DNS别名或IP地址
SERVER_PROTOCOL:显示客户端请求所使用的协议名称和版本,如HTTP/1.0
SERVER_PORT:显示服务器的响应端口
REQUEST_METHOD:显示客户端的文档请求方法,包括GET,
HEAD, 和POST
REMOTE_HOST:显示发出请求信息的客户端主机名称
REMOTE_ADDR:显示发出请求信息的客户端IP地址
AUTH_TYPE:显示用户身份的验证方法
REMOTE_USER:显示访问受保护页面的用户所使用的帐号名称
5、Fsize:显示指定文件的大小,可以结合config命令的sizefmt参数定制输出格式
参数:file
eg:<!--#fsize
file="index_working.html"-->
Sizefmt:决定文件大小是以字节、千字节还是兆字节为单位表示。如果以字节为单位,参数值为 "bytes";对于千字节和兆字节可以使用缩写形式。同样,sizefmt
参数必须放在 fsize
命令的前面才能使用。
eg:<!--#config
sizefmt="bytes"-->
<!--#fsize
file="index.html"-->
6、Flastmod:显示指定文件的最后修改日期,可以结合config
命令的timefmt参数控制输出格式
参数:file
eg:<!--#config
timefmt="%A, the %d of %B, in the year %Y"-->
<!--#flastmod
file="file.html"-->
XSSI(Extended
SSI)是一组高级SSI指令,内置于Apache1.2或更高版本的mod-include模块之中。
#printenv:显示当前存在于WEB服务器环境中的所有环境变量。
语法:<!--#printenv-->
#set:可给变量赋值,以用于后面的if语句。
语法:<!--#set
var="变量名"
value="变量值"-->
eg:
<!--#set var="color" value="red"-->
<!--#echo var="color"-->
#if:创建可以改变数据的页面,这些数据根据使用if语句时计算的要求予以显示。
语法:
<!--#if expr="$变量名='变量值A'"-->
显示内容
<!--#elif expr="$变量名='变量值B'"-->
显示内容
<!--#else-->
显示内容
<!--#endif-->
eg:
<!--#if expr="$color='red'"-->
红色
<!--#elif expr="$color='blue'"-->
蓝色
<!--#else-->
黑色
<!--#endif-->
SSI内置的变量:
AUTH_TYPE ——针对用户的认证授权方式: BASIC
, FORM , etc. 和 Tomcat 内的认证方式同步
CONTENT_LENGTH ——从服务器表单传过来的数据长度,字符数目或者数据的字节数
CONTENT_TYPE ——服务器访问呢数据的 MIME 类型,比如“ text/html ”
DATE_GMT ——目前的时间格式方式使用 GMT
DATE_LOCAL ——目前的时间格式方式设置成为本地时间格式
DOCUMENT_NAME ——当前上下文环境的文件地址
DOCUMENT_URI ——虚拟路径定义的文件地址
GATEWAY_INTERFACE —— CGI 的版本定义:“ CGI/1.1 ”
HTTP_ACCEPT ——一个客户端可以接受的 MIME 类型列表
HTTP_ACCEPT_ENCODING ——客户端可以接受的压缩文件类型的列表
HTTP_ACCEPT_LANGUAGE ——客户端可以支持的语言列表
HTTP_CONNECTION ——管理客户端的连接:是“ Close ”还是“ Keep-Alive ”
HTTP_HOST ——客户端请求的站点地址
HTTP_REFERER ——客户端请求之前所在的 URL 地址
HTTP_USER_AGENT ——客户使用的浏览器端的请求结果
LAST_MODIFIED ——当前页面上一次访问和修改的时间
PATH_INFO ——访问此
Servlet 的路径信息
PATH_TRANSLATED —— PATH_INFO 提供的 translated 版本
QUERY_STRING ——在 URL 地址 ? 之后的请求参数列表
QUERY_STRING_D ——没有经过编码过的请求参数
REMOTE_ADDR ——用户请求客户端 IP 地址
REMOTE_HOST ——用户发送请求的主机名
REMOTE_PORT ——用户发送请求的端口号
REMOTE_USER ——认证授权需要的发送请求的用户名
REQUEST_METHOD ——请求使用方法: GET 或者 POST
REQUEST_URI ——客户端原来访问请求的 Web 页面的 URI 地址
SCRIPT_FILENAME ——在服务器上当前页面的地址
SCRIPT_NAME ——当前页面的名称
SERVER_ADDR ——服务器所在的 IP 地址
SERVER_NAME ——服务器的主机名或者 IP 地址
SERVER_PORT ——服务器接受请求的端口号
SERVER_PROTOCOL ——服务器处理请求的协议:“ HTTP/1.1 ”
SERVER_SOFTWARE ——服务器响应客户端请求的名称和版本号
SSI中日期格式的定义:
%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
SSI指令的更多相关文章
- SSI指令使用详解(转)
什么是 SHTML使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为“服务器端嵌入”或者叫“服务器端包含”,是一种类似 ...
- SSI指令教程
一:概述 SSI:服务器端嵌入或者叫服务器端包含,是Server Side Include的简写.SSI技术通过在文档中加入SSI指令,让服务器端在输出文档之前解析SSI指令,并把解析完的结果和文档一 ...
- 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 ...
- apache 开启服务器包含(SSI)技术
SSI(server-side includes)能帮我们实现什么功能: SSI提供了一种对现有HTML文档增加动态内容的方法, 即 在html中加入动态内容 SSI是嵌入HTML页面中的指令,在页 ...
随机推荐
- 二分法&三分法
ural History Exam 二分 #include <iostream> #include <cstdlib> using namespace std; //二分 ...
- 第26章 java进制操作
java进制操作 1.二进制 二进制只有0和1,逢二进一 二进制多用在计算机中,来自计算机硬件的开关闭合 2.位运算 分别讲解: 2.1.按位与 & 两位全为1,结果才为1 0&0=0 ...
- Struts2 入门
一.Struts2入门案例 ①引入jar包 ②在src下创建struts.xml配置文件 <?xml version="1.0" encoding="UTF-8&q ...
- 嵌入式Linux驱动学习之路(二十)USB设备驱动
USB在接入系统的时候,以0的设备ID和主机通信,然后由主机为其分配新的ID. 在主机端,D+和D-都是下拉接地的.而设备端的D-接上拉时,表明此设备为高速设备:12M/s. D+接上拉时则是全速设备 ...
- c语言游戏推箱子
前两天做了推箱子小游戏,看似简单的一个小游戏背后却 有巨大的秘密,这秘密就是一大堆逻辑. 自从学习了函数过后,的确是解决了很多问题,而且调用很方便,尽管我现在都不是很会调用. 写完一个函数,准备测试一 ...
- 国内可用maven repository 配置
国内可用maven repository 配置 发表于2016/1/4 23:08:04 10235人阅读 分类: maven 鉴于一些原因,从maven中央仓库download依赖包时,被各种折磨 ...
- C#基础系列——反射笔记
前言:使用反射也有几年了,但是一直觉得,反这个概念很抽象,今天有时间就来总结下这个知识点. 1.为什么需要反射: 最初使用反射的时候,作为小菜总是不理解,既然可以通过new 一个对象的方式得到对象,然 ...
- C语言编程实现Linux命令——who
C语言编程实现Linux命令--who 实践分析过程 who命令是查询当前登录的每个用户,它的输出包括用户名.终端类型.登录日期及远程主机,在Linux系统中输入who命令输出如下: 我们先man一下 ...
- java画图之曲线拖动
目标:在窗体上按下鼠标按键.然后拖动鼠标,在按下和拖动之间绘制曲线 事件机制 事件源对象:窗体 事件监听方法:addMouseListener(MouseListener l);addMouseMot ...
- 如何对多个属性进行transform
w3school对transform的介绍很简单 transform: none|transform-functions; transform的默认值是none 其所举的例子也只是对一个值进行过渡,其 ...