您的位置:首页 > 运维架构 > Apache

Apache下开启SSI配置使shtml支持include包含

2015-03-17 13:40 736 查看
学过动态网页,如asp、php的人知道如何去引用网站头部、底部文件包含。例如在php中有一个方法:include();这个方法能在当前文档中引入外部文件,从而方便网站的开发和维护,然而html静态文件的包含却鲜为人知,我们平时看到很多大型的网站都使用了.shtml的文件类型,其实它们是启用了ssi的功能,因此实现了shtml等静态页的包含。

下面我讲解一下Apache下ssi配置方法。

加载ssi模块。因为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的文件类型,如图:



在httpd.conf文件中查找“Options Indexes FollowSymLinks” 在后面加上INCLUDES,需要注意的是,ssi可以利用shell来执行命令,因此这个功能是有危险的,它会执行任何包含在exec标记中的命令,如果你的用户有权限修改你的网页内容,建议把该功能关闭。当然你还可以加上IncludesNOEXEC参数,来关闭exec功能,同时又保留SSI。此时改为: Options Indexes FollowSymLinks INCLUDES IncludesNOEXEC

重启apache,即可使用shtml文件包含了。对于个别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]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: