更多:http://www.webyang.net/Html/web/article_139.html
对于静态网站有公共头尾需要包含,又不想用动态网页编写的。那该如何技术实现呢?
方法有三:
1、IFrame, 这个可能是大家最熟悉的 <iframe name="neepage" marginwidth="0" marginheight="0" src="import.htm" width="100%" height="30"></iframe> 加上它的一些属性可以实现一些透明,无滚动条等具体的效果。以及他的兄弟:Frameset 等。
2、JS实现,通过加载js的形式,把html加载进来,一般广告采取这种形式。
3、shtml。使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为"服务器端嵌入"或者叫"服务器端包含",是一种类似于ASP的基于服务器的网页制作技术。默认扩展名是 .stm、.shtm 和 .shtml。
相对前两者,shtml是最佳选择了。shtml可以包含指定文件到文档中如同PHP中的include功能类似。但是如果需要用到shtml,就需要服务器支持SSI。
SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有强大的功能,只要使用一条简单的SSI命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。网站维护常常碰到的一个问题是,网站的结构已经固定,却为了更新一点内容而不得不重做一大批网页。SSI提供了一种简单、有效的方法来解决这一问题,它将一个网站的基本结构放在几个简单的HTML文件中(模板),以后我们要做的只是将文本传到服务器,让程序按照模板自动生成网页,从而使管理大型网站变得容易。
分两个web服务器来讲吧:
一:nginx
Nginx本身已经支持了SSI,但默认是不开启的,需要手动开启。
打开Nginx配置文件nginx.conf,在http里加入以下三句话。
- ssi on;
- ssi_silent_errors on;
- ssi_types text/shtml;
ps:这里文件类型可以改成其他的,比如让htm也支持ssi,那么把text/shtml改成text/htm就行了,但是这样的话,由于服务器里htm的文件较多,也不一定全都用ssi引入其他页面,会给nginx造成一些不必要的消耗,所以不建议这么做。
如果需要添加默认首页,可以在nginx.conf里找到Index选项,改成
- Index index.shtml index.html index.htm
保存重启nginx即可。
二:apache
Apache默认是不支持SSI的,需要我们更改httpd.conf来进行配置。
- #AddType text/html .shtml
- #AddOutputFilter INCLUDES .shtml
把这两行前面的#去掉 。
接着搜索"Options Indexes FollowSymLinks"
修改为:"Options Indexes FollowSymLinks Includes"
保存httpd.conf,重起apache即可
加载只需要用到include,用法:
Virtual:给出到服务器端某个文档的虚拟路径。例如:<!--#include virtual="/includes/header.html" -->
File:给出到当前目录的相对路径,其中不能使用"../",也不能使用绝对路径。例如:<!--#include file="header.html" -->