服务器端包含(SSI)是一种用于动态生成HTML页的脚本语言,该脚本在页面传递到客户端之前在服务器上运行,并且通常涉及将一个文件插入另一个文件。可以创建一个HTML导航菜单,并使用SSI动态将其添加到网站上的所有页面。

IIS6开启SSI

1、允许“在服务器前端的包含文件”

默认情况下Windows 2003的IIS6.0是支持SSI指令的,只要在“WEB服务扩展”允许“在服务器前端的包含文件”即可。可执行文件的位置为: C:\WINDOWS\system32\inetsrv\ssinc.dll ;扩展名为:shtml/shtm。

2、添加“.shtml/.shtm”的MIME类型

打开IIS6管理器,打开“本地计算机”的属性 -> MIME类型 -> 新建
后缀名:.shtml
MIME类型:text/html
后缀名:.shtm
Mime类型:text/html

正常情况下,通过以上两步的设置,IIS中的站点就可以运行shtml文档了。如果发现仍然还不能运行shtml文件,可以检查一下站点的应用程序映射,是否将.shtml.shtm的处理程序指向了C:\WINDOWS\system32\inetsrv\ssinc.dll 。

查看SSI配置是否正确

IIS7、IIS10开启SSI功能

打开服务器管理器(控制面板里的添加Windows功能),选择Web服务器=>应用程序开发=>服务器端包含,安装即可。

IIS10 开启SSI(服务器端包含)

注意:如果引用公共页面比如导航、头部菜单、底部信息等,需要把编码设置成统一的,例如主页使用utf-8编码,引入的文件也必须是utf-8编码,否则可能会导致乱码。

Apache开启SSI

	sudo a2enmod include

在httpd.conf文件中找到以下两行代码:

	AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Options Includes // Includes 为追加 如include的内容不需要exec,则使用IncludesNoExec

重启Apache

Nginx开启SSI

Nginx服务器开启SSI需要修改Nginx.conf配置文件。

  • 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
	server {
    listen 80;
    server_name admin-demo.laputateam.com;
    root /home/wwwroot/Laputa_admin_demo;    
    index index.html index.htm index.php;

    location ~.*\.php?$ {
        ssi on;
        ssi_silent_errors on;
        ssi_types text/shtml;

        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include       fastcgi_params;
    }
}

参考链接: Apache SSI 使用
Nginx 配置 SSI 的方法