在一个HTML页面中发现一段这样的代码:

<!--#include virtual="/new/ssi/script.html"-->

在本地环境打开网页总觉得缺少什么,和测试服务器网页对比,发现确实少了很多内容,原来include virtual是包含另一个页面的意思。但是奇怪,一般包含页面不是在模板页面或者动态页面include其他页面吗?

原来这是SSI,什么是是SSI?

SSI:Server Side Include,是一种基于服务端的网页制作技术,大多数(尤其是基于Unix平台)的web服务器如Netscape Enterprise Server等均支持SSI命令。

它的工作原因是:在页面内容发送到客户端之前,使用SSI指令将文本、图片或代码信息包含到网页中。对于在多个文件中重复出现内容,使用SSI是一种简便的方法,将内容存入一个包含文件中即可,不必将其输入所有文件。通过一个非常简单的语句即可调用包含文件,此语句指示 Web 服务器将内容插入适当网页。而且,使用包含文件时,对内容的所有更改只需在一个地方就能完成。**

**

一个典型的应用场景就是登陆导航栏,当页面都是html静态页的时候,动态导航栏页面内容可以使用SSI包含。

在Nginx配置中开启SSI

只需在server块中添加一行代码就可以开启SSI,如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
server {  
        listen  10.3.9.27:80;  
        server_name  www.tanteng.me;  
        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.ball.com-access_log main;  
        }  
    }

我不知道SSI是不是一个很老的技术,现在似乎很少用这种方式引入其他页面,但也学到了一招,原来这样也可以。