在网站构建过中。当我们遇到很多的内容为静态页面,而页首与页脚又经常要更换时,如果一直使用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. R语言ggplot2可视化:自定义函数在箱图(boxplot)上添加分组样本个数(count)、分组均值(mean)、箱体填充色自定义、数据标签色彩自定义
  2. Linux下编译构建成功HelloWorld驱动程序并加载
  3. Ubuntu下安装依赖包问题总结
  4. Apache Flink 零基础入门(六)Flink核心概念
  5. 搞机器学习需要数学基础吗?
  6. 驱动提取软件_深入分析施耐德工控软件代码执行漏洞
  7. 第一节 从面向对象的角度重新认识JS世界
  8. Butterknife全方位解析
  9. LiveLayout
  10. 计算机的输入法如何使用简短描述,应用电脑(1)第一章 计算机组成与中文输入法...
  11. 李宏毅20212022机器学习
  12. 基于51单片机的密码锁设计
  13. 网络(韩志刚版笔记)
  14. 目前重庆橱柜市场分析
  15. 程序员的十种搞笑级别
  16. 网络安全课程设计Java实现DES加密算法(可视化界面)代码+设计文档
  17. 最大熵阈值python_李航统计学习方法(六)----逻辑斯谛回归与最大熵模型
  18. 微信小程序OTO商城(客户端)
  19. MMKV的简单实用一
  20. 计算机语言的文体特点,网络语言文体特征

热门文章

  1. 汽车整车三维建模用于逆向设计与竞品分析
  2. cisco 交换机恢复IOS与更改波特率
  3. accept函数介绍
  4. pandas简单绘制图表
  5. android usb设置波特率,USB开发中设置波特率
  6. UI设计小白怎样学才能快速入门
  7. 8086中断系统简答
  8. 网络安全笔记7——防火墙技术
  9. 动态模式分解(DMD)
  10. EMC XtremIO“死亡传闻”被质疑