2018-03-11 16:41:34

Server Side Include

description

服务器端嵌入或者叫服务器端包含,是Server Side Include的简写。SSI技术通过在文档中加入SSI指令,让服务器端在输出文档之前解析SSI指令,并把解析完的结果和文档一同输出给客户端。

Nginx配置SSI

server {  
    listen  10.3.9.27:80;  
    server_name  www.zxysilent.com;  
    location / {  
        ssi on;  
        ssi_silent_errors on;  
        ssi_types text/shtml;  
        index index.shtml;  
        root /usr/local/web/wwwroot;  
        expires 30d;  
        access_log      /data/logs/ www.zxysilent.com-access_log main;  
    }  
}  

使用SSI

base

格式:<!-- #指令名称 参数="参数值">

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

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

#include 为SSI指令之一。 fileinclude的参数, info.htm为参数值,在本指令中指将要包含的文档名。

注意 前面与#号间无空格,只有SSI指令与参数间存在空格。 SSI指令是大小写敏感的,因此参数必须是小写才会起作用。

include

把其它文档插入到当前被解析的文档中

<!--#include file="file_name_extension"--> 

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

<!--#include virtual="/path/file_name_extension"-->

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

  • file 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目录下的的naver.html文档,则为file="naver.html
  • virtual 文件名是 Web 站点上的虚拟目录的完整路径。如表示相对于服务器文档根目录下inc目录下的naver.html文件;则为 virtual="/inc/naver.html" 注意 文件名称必须带有扩展名。

echo

将环境变量插入到页面中

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

eg

<!--#echo var="DOCUMENT_NAME"--> 本文档名称
<!--#echo var="DATE_LOCAL"--> 现在时间
<!--#echo var="REMOTE_ADDR"--> 你的IP地址

flastmod

显示指定文件的最后修改日期

<!--#flastmod file="file_name_extension"--> 
<!--#flastmod virtual="/path/file_name_extension"-->

fsize

显示文件的大小

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

exec

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

<!--#exec cmd="file_name_extension"-->

cmd 常规应用程序

<!--#exec cgi="file_name_extension"-->

CGI脚本程序 eg

<!--#exec cmd="dir /b"--> 将会显示当前目录下文件列表
<!--#exec cgi="/cgi-bin/demo.cgi"--> 将会执行CGI程序demo.cgi。

config

指定返回给客户端浏览器的错误信息、日期和文件大小的格式

<!--#config errmsg="自定义错误信息"-->

errmsg 自定义SSI执行错误信息,可以为任何你喜欢的方式。

<!--#config sizefmt="显示单位"-->

sizefmt 文件大小显示方式,默认为字节方式("bytes")可以改为千字节方式("abbrev")

<!--#config timefmt="显示格式"-->

timefmt 时间显示方式,最灵活的配置属性。

eg

  • 显示一个不存在文件的大小
    <!--#config errmsg="服务器执行错误,请联系管理员"-->
    <!--#fsize file="noexist.htm"-->
    
  • 以千字节方式显示文件大小
    <!--#config sizefmt="abbrev"-->  
    <!--#fsizefile="news.htm"-->
    
  • 以特定的时间格式显示时间
    <!--#config timefmt="%Y年/%m月%d日 星期%W 北京时间%H:%M:%s,%Y年已过去了%j天 今天是%Y年的第%U个星期"-->
    <!--#echo var="DATE_LOCAL"--> 显示今天是星期几,几月,时区
    

时间格式

%a 一周中某天的缩写(例如,Mon)。
%A 一周中某天的全称(例如,Monday)。
%b 月份的缩写(例如,Feb)。
%B 月份的全称(例如,February)。
%c 当地的日期和时间的表示(例如,05/06/91 12:51:32)。
%d 以十进制数字表示的一个月中的某天 (01-31)。
%H 24 小时格式 (00-23)。
%I 12 小时格式 (01-12)。
%j 以十进制数字表示一年中的某天 (001-366)。
%m 以十进制数字表示的月份 (01-12)。
%M 以十进制数字表示的分 (00-59)。
%p 当地的上午或下午指示符(例如,PM)。
%S 以十进制数字表示的秒 (00-59)。
%U 以十进制数字表示一年中的某一周,星期日作为一周的开始 (00-51)。
%w 以十进制数字表示一周中的某一天,星期天是第一天 (0-6)。
%W 以十进制数字表示一年中的某一天,星期一作为一周的开始 (00-51)。
%x 当地的日期表示(例如,05/06/91)。
%X 当地的时间表示(例如,12:51:32)。
%y 以十进制数字表示的不带有世纪的年(例如,69)。
%Y 以十进制数字表示的带有世纪的年(例如,1969)。
%z, %Z 时区全称或缩写;如果不知道时区,则没有字符。

本文链接:https://blog.zxysilent.com/post/ssi.html

-- EOF --

Comments