【Apache】服务器开启SSI-include包含模块
加载ssi模块
关于ssi-include如何包含文件,参见:SSI-include命令的路径使用
因为ssi是apache中的一个模块服务项,要使用ssi功能,我们首先要对ssi模块进行加载,打开apache的配置文件httpd.conf。找到LoadModule ssl_module modules/mod_ssl.so命令,因该服务未被默认加载,所以只需取消该命令前的注释符#即可开启。如图所示:
添加要包含的文件类型
因为使用ssi技术的默认文件名为.shtml,所以我们需要在配置文件中对.shtml后缀名进行设置,并按自己的需求设置需要对ssi技术进行解析的文件类型设置。同样在httpd.conf文件中找到如下两行代码:
默认是:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
为了支持html 修改为:
AddType text/html .shtml .html
AddOutputFilter INCLUDES .shtml .html
如果代码前有注释,请把注释去掉,还可以添加.html的文件类型,如图:(使用空格添加其他支持的类型)
添加Include功能
在httpd.conf文件中查找“Options Indexes FollowSymLinks” 在后面加上INCLUDES,需要注意的是,ssi可以利用shell来执行命令,因此这个功能是有危险的,它会执行任何包含在exec标记中的命令,如果你的用户有权限修改你的网页内容,建议把该功能关闭。当然你还可以加上IncludesNOEXEC参数,来关闭exec功能,同时又保留SSI。此时改为:Options Indexes FollowSymLinks INCLUDES IncludesNOEXEC
最终改为: Options Indexes FollowSymLinks INCLUDES IncludesNOEXEC
重启apache
重启apache,即可使用shtml和html文件包含了。对于个别apache环境还不能使用.html的情况,你可尝试在目录配置中添加以下代码基本能开启:
AddType text/html .ssi
Options Includes
AddOutputFilterByType INCLUDES;DEFLATE text/html
文件包含引用方法
引用绝对路径的文件
<!--#include file="e:/w2/top.shtml"-->
引用当前相对路径目录文件
<!--#include virtual="include/top.html"-->
路径要写正确,路径不正确会报错:
[an error occurred while processing this directive]