职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1759|回复: 1

用shtml来include网页文件(开启SSI)

[复制链接]
benet 发表于 2007-8-17 12:37 | 显示全部楼层 |阅读模式
在网站构建过中。当我们遇到很多的内容为静态页面,而页首与页脚又经常要更换时,如果一直使用html文件总会有很多的麻烦。因为批量修改起来很不方面,所以我们总希望能将页脚与页尾include到html文件中来。html属于客户端解析形的格式化语言,自4.0后几乎很难再有大的变动(毕竟很多浏览器只按4.0标准来解析),所以至今也没include这样的概念。而html的框架(frame与iframe)虽然可以用来包含首页与页脚文件,但使用frame与iframe的概念与动态页面(asp,jsp,php等)的include那样不同,frame与iframe的主体页面与被包括的页的不是一个页面,而通过include的方式调用的页面主体页面与被包括的页面仍然是一个页面,这样页面再加载的时就没速度的影响,更不会有多个窗口这样的问题。当然frame与iframe的作用还是挺大的,只是这与include这样包括页面进来的概念不同。


  除frame与iframe之外,常用的调用文件的方法还有采用js。这与include概念倒是很接近,但可以需要客户端js的支持,而且修改也不很方面,因为被包括的js是通过document.write来输出html代码,这样虽然能达到效果,可js毕竟执行客户端动态效果更好,比如现在较流行的AJAX。所以无论是frame/iframe还是js都与include不太一样(倒是Dreamweaver中的library与include很像,可惜只能用在Dreamweaver中),而我们有时页面有很多静态页面,内容不是动态的且没有规律可循,更不好做到数据库里去。如新浪的新闻之类的,这时我们可以采用shtml的方式来做这些页面。--JarryLi in BeiJing

那什么是shtml呢?
  使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为\"服务器端嵌入\"或者叫\"服务器端包含\",是一种类似于ASP的基于服务器的网页制作技术。默认扩展名是 .stm、.shtm 和 .shtml。
什么是SSI?
SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针。SSI具有 强大的功能,只要使用一条简单的SSI命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。 网站维护常常碰到的一个问题是,网站的结构已经固定,却为了更新一点内容而不得不重做一大批网页。SSI提供了一种简单、有效的方法来解决这一问题,它将 一个网站的基本结构放在几个简单的HTML文件中(模板),以后我们要做的只是将文本传到服务器,让程序按照模板自动生成网页,从而使管理大型网站变得容易。
如何使你的Apache服务器支持SSI?
Apache(如何在windows以及linuc下安装apache请参见另两篇文章)默认是不支持SSI的,需要我们更改httpd.conf来进行配置。我这里以windows平台的Apache 2.0.x为例(在linux平台下与之相同),打开conf目录下的httpd.conf文件,搜索“AddType text/html .shtml”,找到:

# AddType text/html .shtml
# AddOutputFilter INCLUDES .shtml

把这两行前面的#去掉 。

然后搜索“Options Indexes FollowSymLinks”
在搜索到的那一行后面添加“ Includes”
即将该行改变为 Options Indexes FollowSymLinks Includes

熟悉apache manual的可能会觉得比较容易。
保存httpd.conf,重起apache即可
到此我们就完成了对Apache SSI的设置。
如何让你的IIS服务器支持SSI
windows 2000:
IIS里添加一个应用程序扩展名映射
可执行文件:C:\\WINDOWS\\system32\\inetsrv\\ssinc.dll
扩展名:shtml/shtm
windows 2003 2003默认已经支持SSI(shtml文件),只需在IIS的\"Web服务扩展\"里设置\"在服务器端的包含文件\"为\"允许\" 即可IIS6.0对于SSI进行了一些改进,以前IIS5.0的一些程序迁移过后可能无法运用。
一个经常的出现问题是出现如下错误:
\"处理 SSI 文件时出错 - Error processing SSI file\"

经过测试,以下做法会导致这个错误:
1、服务器物理路径使用中文名。
2、包含文件中使用中文名。
3、包含文件不存在。
4、被包含的文件再次包含使用中文名的文件。

该错误在Unicode编码时依旧,属于IIS的问题。
解决方法:对于使用SSI的站点物理和URL地址都全部使用英文。
shtml文件测试?
主体文件,比如命名为test.shtml,内容为(把head.html与foot.html文件包进来,与asp,jsp,php中的include相同)

<!--#i nclude file=\"head.html\"--><hr><b>你好,这是中间的内容</b><hr><!--#i nclude file=\"foot.html\"-->

页首文件,比如命名为head.html,内容为

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\"http://www.w3.org/TR/html4/loose.dtd\"><html><head><title>Untitled Document</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\"></head><body><div style=\"background-color:#00CC66;boder:1px groove orange \">我是页首导航栏的公共信息</div>
页尾文件,比如命名为foot.html,内容为

我是页尾版权信息</body></html>

然后运行web server,在
曾经的小孩 发表于 2011-8-9 10:45 | 显示全部楼层
呵呵 都没人想我~~
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-25 16:21 , Processed in 0.118215 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表