在网站构建过中。当我们遇到很多的内容为静态页面,而页首与页脚又经常要更换时,如果一直使用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

新建一个前端学习qun438905713,在群里大多数都是零基础学习者,大家相互帮助,相互解答,并且还准备很多学习资料,欢迎零基础的小伙伴来一起交流。

那什么是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,在地址栏中打开test.shtml文件,就会得到一个完整的页面,包括头与尾文件。
shtml中简单的SSI命令
SSI具有强大的功能,只要使用一条简单的SSI命令就可以实现整个网站的内容更新,时间和日期的动态显示,以及执行shell和CGI脚本程序等复杂的功能。比如我们修改上面提及的test.shtml文件,加入以下代码,将会显示服务器日期以及客户端IP等:

<font color=red>  本文档名称: <br>  <!--#e cho var="DOCUMENT_NAME"--> <br>  时区:<br>  <!--#e cho var="DATE_LOCAL"--> <br>  你的IP地址是: <br>  <!--#e cho var="REMOTE_ADDR"--><br>  今天是:  <!--#c onfig timefmt="%A, %B %d, %Y"-->  <!--#e cho var="LAST_MODIFIED" -->  <br>  </font>
SSI指令基本格式: 
程序代码:
<!-– 指令名称="指令参数"> 
<!--#i nclude file="head.htm"--> 
说明: 
1.<!-- -->是HTML语法中表示注释,当WEB服务器不支持SSI时,会忽略这些信息。 
2.#i nclude 为SSI指令之一。 
3.file 为include的参数, info.htm为参数值,在本指令中指将要包含的文档名。 
注意: 
1.<!--与#号间无空格,只有SSI指令与参数间存在空格。 
2.上面的标点="",一个也不能少。 
3.SSI指令是大小写敏感的,因此参数必须是小写才会起作用。
详细可以查看SHTML详细教程 ,通过SHTML可以减轻许多工作负担哦。
另外:shtml文件在网页服务器下运行才有效,直接用ie打开将被当作是文本文件。

用shtml来include网页文件(开启SSI)相关推荐

  1. PHP文件开启SSI(以CMSTOP环境为例)

    案例:使后台支持SSI: Apache服务器下修改***.conf配置文件,在后台虚拟目录部分,添加以下两行: AddType application/x-httpd-php .php AddOutp ...

  2. html静态页面引入公用组件, 开启SSI配置使shtml支持include公用的页头页脚

    转自 : http://www.phpvar.com/archives/3278.html 这是文章是为了实现前端人员编写编写项目众多静态文件时,能像php等开发语言一样使用include将页面公有的 ...

  3. 为Nginx开启SSI模块以支持SHTML及include文件引入

    SSI 是 Server Side Include 的首字母缩略词.包含有嵌入式服务器方包含命令的 HTML 文本.在被传送给浏览器之前,服务器会对 SHTML 文档进行完全地读取.分析以及修改. 在 ...

  4. nginx 开启ssi

    一:为什么用ssi? 一个登录用户在页面访问的时候如何充分利用 cache? 页面静态化的一个大问题是登录用户访问页面如何静态化.例如首页,大部分的页面内容需要缓存但是用户登录后的个人信息是动态信息, ...

  5. html 支持ssi,nginx下开启ssi支持

    一.简介 SSI(Server Side Include),是一种类似于ASP的基于服务器的网页制作技术 .将文本.图形或应用程序信息包含到网页中.例如,可以使用 SSI 包含时间/日期戳.版权声明或 ...

  6. lwip-2.1.3自带的httpd网页服务器使用教程(一)从SD卡读取网页文件并显示

    概述 本教程使用的单片机是STM32F103ZE,有线网口芯片为ENC28J60. 本教程里面的网页由于需要兼容Windows XP系统的IE8浏览器,所以采用HTML 4.01编写,不使用任何前端框 ...

  7. 关于shtml页面include问题解决方案

    这几天再做站点静态化工作,本以为很简单的事情,不想实际实现过程中还是遇到了些小问题 页面上有一些是公用嵌套页如head.inc,bottom.inc等,为了修改维护方便决定使用shtml的includ ...

  8. html网页文件的主体标记,HTML的填空题:1.HTML文件中网页文件的主体标记是_________,标记页面标题的标记是_____________。如题 谢...

    HTML文件中网页文件的主体标记是 ,标记页面标题的标记是. body元素是定义文档的主体,包含文档的所有内容.body是用在网页中的一种HTML标签,表示网页的主体部分,也就是用户可以看到的内容,可 ...

  9. C#代码实现把网页文件保存为mht文件

    MHT叫"web单一文件".顾名思义,就是把网页中包含得图片,CSS文件以及HTML文件全部放到一个MHT文件里面.而且浏览器可以直接读取得. 由于项目需要,需实现把指定的网页文件 ...

最新文章

  1. ML之DT(树模型):DT(树模型算法)算法的简介、代码定义、案例应用之详细攻略
  2. 6599元!索尼Xperia 5 III国行版今日首销:媲美专业微单相机
  3. js 取闭合标签正则_js正则表达式解析html标签中的内容
  4. python编程(python和c相互调用)
  5. DB2 一个汉字的Byte数,太操蛋了
  6. centos7源码编译安装mariadb
  7. JAVA中运行看不见窗口_eclipse中已经把窗口设置为可视,为什么运行 时还是看不到窗口?...
  8. hadoop、hbase、hive、spark分布式系统架构原理
  9. E-Prime1.1安装教程及软件下载
  10. WPS快捷键提高工作效率
  11. oracle数据库审计要素,明御数据库审计及风险控制系统招标参数.docx
  12. 有机咖啡最佳抗氧化的好处
  13. MATLAB-APP编程
  14. 2021最新百度、头条等公司Android面试题目,附小技巧
  15. H5 -- 自定义微信分享第三方页面链接的标题和小缩略图
  16. 程序员,你需要些“脑力运动”了
  17. C++跨平台开源库 之二
  18. 细粒度图像分析综述2019
  19. 16日,7月,2012 - 昨天晚睡 | 整理电脑 | 没有进度
  20. N880e 刷机记录和一些经验

热门文章

  1. c语言中大圣打妖怪题目,《西游记》竞赛题目100题
  2. 2021年中国路由器行业进出口现状:我国路由器出口均价48.56美元/台,同比增涨41.83% [图]
  3. 记账的艺术 — 彻底搞懂会计的借贷法则
  4. 开关4元、瓷砖7.8元、地板79.... 3.30日广州惊现2014最低价!
  5. 7天涨粉20万,看过这篇抖商代理攻略的人,都偷偷收藏了!
  6. js的节点操作动态创建table表格,创建行,删除行
  7. 计算机三级上机场,机场围界防入侵解决方案
  8. 我是中国魔兽玩家-看你妹之网瘾大战
  9. R语言设置数值输出(保留至小数点后位数和保留有效数字)
  10. LB集群——LVS负载均衡介绍(DR模式、TUN模式、NAT模式)