我爱学习网首页 | 设为首页 | 收藏本站 | 网站地图 您好,欢迎光临我爱学习网
我爱学习网

当前位置:首页 > 编程开发 > 源码环境 >

Apache ssi配置开启shtml文件包含shtml

时间:2014-04-16 21:02 来源:我爱学习网 | 作者:我爱学习网 | 本文已影响
Apache ssi配置开启html文件包含

一、为什么要使用ssi

先设想一下:当我们在做一个比较大型的项目时,这个项目含有近20个demo页面,而所有demo页面将会引用统一的样式、JS等文件,这20个demo页面中有10个

页面包含统一的侧栏模块。当我们将这个项目demo做完后,将会是20个完整的html文件,我们在将完整的demo页面后台开发工程师进行开发。


但是我们都知道,在项目过程中,需求随时在更改,当我们将这个20个完整的html做好后,如果侧栏的某一模块的需求改变,那么将会有近10个html页面都会

进行变更,如果我们前端在对这10个页面都进行更改,这应该会是一个很大的工作量,而且会很容易出错。在这时候我们就需要想一些办法来解决这样的问题

,那么ssi将是最好的解决方案。



二、ssi引用原理

其实学过php的同学应该知道,在php中有一个方法:include();这个方法能在当前文档中引入外部文件。其实ssi的功能大概也就是这样实现的。还是接着刚刚

上面的例子,我们现在需要对这个10个页面的侧栏模块进行修改,我们可以先将这个侧栏模块的代码放在一个独立的文件中,然后再html中所需要进行

include操作,这样我们后期有需求修改的时候,我们只需修改这一个独立的侧栏模块文件就OK。那么这样效率会更高。



三、ssi引用方法

对于ssi的引用非常简单,我只举两个简单的例子:


引用绝对路径文件:<!--#include file="D:/dev/include/sub.html"-->


引用当前虚拟目录文件:<!--#include virtual="include/sub.html"-->   注:此处注释标签采用使用全角方式录入,在使用时建议自己录入命令,

不要直接copy.


ssi的用不只是局限于重复内容模块的应用,而且还可以设置变量等等,可以到 Apache指南中查看。



四、ssi配置

1)、加载ssi模块


因为ssi是apache中的一个模块服务项,所以我们首先要对ssi模块进行加载,打开apache的配置文件httpd.conf。找到 LoadModule ssl_module

modules/mod_ssl.so 命令,因该服务未被默认加载,所以只需取消该命令前的注释符#即可。


2)、添加新的文件类型


因为使用ssi技术的默认文件名为.shtml,所以我们需要在配置文件中对.shtml后缀名进行设置,并设置需要对ssi技术进行解析的文件类型设置。命令如下:


AddType text/html .shtml   //添加shtml文件类型


AddOutputFilter INCLUDES .shtml   //对shtml文件进行ssi指令解析


在apache中没有限制只能在shtml中使用ssi指令,如果我们需要在html中使用ssi指令,那么我们只需要在配置文件中添加一句


AddOutputFilter INCLUDES .html


3)对需要使用ssi指令的虚拟目录进行设置


对于虚拟目录设置最简单的方法就是在httpd.conf中搜索到Options,并在该命令后添加Includes。如果本地创建了多个虚拟目录,还需要对每个虚拟目录进

行设置,打开conf/extra/httpd_vhosts.conf,对目录授权时,可使用Options +命令来使其支持SSI,具体可参考Apache options指令指南



重启apache,所有配置将生效!~


如果您通过上述设置还不能在.html文件中包含.html文件时,请参考以下方法:



Apache SSI在网上一搜,大部分只是介绍了一部分的配置,导致配置后,还是不能显示,本人也吃过亏,经过自己摸索,终于解决了,步骤总结如下:
一、配置Apache conf文件,修改主要有3处地方:
1、# AddType text/html .shtml
     # AddOutputFilter INCLUDES .shtml
去掉它们前面的“#”号
2、在“Options Indexes FollowSymLinks”后面加上 Includes
网上很多文档介绍到此为止,导致还是不能显示。
3、在此处还需加上:
AddType text/html .ssi
Options Includes
AddOutputFilterByType INCLUDES;DEFLATE text/html
例如我的配置:
NameVirtualHost *:8080
<VirtualHost *:8080>
ServerName *
DocumentRoot "C:/APMSer/APMServ5.2.6/www/htdocs"
<Directory "C:/APMSer/APMServ5.2.6/www/htdocs">
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.htm default.htm index.php default.php index.cgi default.cgi index.pl default.pl index.shtml
AllowOverride None
Order Deny,Allow
Allow from all
AddType text/html .ssi
Options Includes
AddOutputFilterByType INCLUDES;DEFLATE text/html

</Directory>
</VirtualHost>

二、路径要写正确,路径不正确会报错:[an error occurred while processing this directive],例如:
我的index.html中包含的<!--#include virtual="includes/header_rmq.html"-->(本机是windows环境,linux下未做测试)

经过以上2个步骤,问题就解决了! (责任编辑:我爱学习网)


分享到: 更多