什么是SSI

SSI:Server Side Include,是一种基于服务端的网页制作技术,大多数(尤其是基于Unix平台)的web服务器如apache nginx等均支持SSI命令。
它的工作原因是:在页面内容发送到客户端之前,使用SSI指令将文本、图片或代码信息包含到网页中。对于在多个文件中重复出现内容,使用SSI是一种简便的方法,将内容存入一个包含文件中即可,不必将其输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。

指令描述

SSI是被HTML文档内需要进行处理的包含部分的SSI Servlet调用的。这些指令是HTML文档的注释形式,这些指令在将内容发送到客户端之前进行内容的替换。标准格式如下:

<!--#directive [parm=value] -->

这些指令包括:

config:设置日期格式一起被SSI处理的其他数据(<!--#config timefmt="%B %Y" -->)

echo:将会被变量的值替换掉(<!--#echo var="VARIABLE_NAEM" -->)

exec:用来执行服务器端的命令

include:包含某些内容(<!--#include virtual="file-name" -->)

flastmod:返回某个文件最后一次修改的时间(<!--#flastmod file="filename.html" -->)

fsize:返回某个文件的大小(<!--#fzie file="filename.html" -->)

printenv:返回所有定义的变量(<!--#printenv -->)

set:用来为定义的变量赋值(<!--#set var="foo" value="Bar" -->)

if elif endif else:创建条件分支语句

nginx启用SSI

nginx的SSI配置选项主要是以下三个:

  • ssi: 默认值off,启用ssi时将其设为on

  • ssi_silent_errors: 默认值off,开启后在处理SSI文件出错时不输出错误提示"[an error occurred while processing the directive]"。

  • ssi_types: 默认是text/html,所以如果需支持html,则不需要设置这句,如果需要支持shtml则需要设置:ssi_types text/shtml


三个参数可以放在http, server或location作用域下。

#静态化站点映射
server {
        listen       80;
        server_name  www.publiccms.com;
	index index.html;
	root    /data/www/publiccms.com/static/;
	error_page 404	/404.html;
	#开启SSI服务器端包含
	ssi on;
	ssi_silent_errors on;
	access_log  /data/log/nginx/access/publiccms.com.log;
}

apache上启用SSI

  • 在apache配置文件(httpd.conf)中配置需要支持SSI的后缀(html)

去掉AddType text/html,AddOutputFilter INCLUDES前面注释

# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
AddType text/html .html
AddOutputFilter INCLUDES .html
  • 查找Options Indexes FollowSymLinks在后面加上Includes

Options Indexes FollowSymLinks Includes

IIS启用SSI

  • 修改IIS设置,将在服务器端的包含文件修改为允许

标签:SSI,IIS,nginx,tomcat,apache

0条评论
发表评论