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

include|网页

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

时间: 2024-08-03 03:54:47

用shtml来include网页文件(开启SSI)的相关文章

Apache下开启SSI配置使html支持include包含的方法_Linux

写页面的同学通常会遇到这样的烦恼,就是页面上的 html 标签越来越多的时候,寻找指定的部分就会很困难,那么能不能像 javascript 一样写在不同的文件中引入呢?答案是有的,apache 能做到. 举个简单的例子,比如有如下的 html 文件(命名为 index.html): <input type='text' /> <input type='button' value='press' /> 一个简单的文本框和按钮,我现在想把按钮部分的 html 写在另一个 .html 的

怎么会在网页文件的底部插入JS代码哦

问题描述 怎么会在网页文件的底部插入JS代码哦一串这样的代码<scriptsrc="fsdfshfjhfdf%%&"></script>加上这个文件以后.网站就报错了.在CS文件会报错是不是被人攻击了`.大家帮下忙`.谢谢!!!!!!! 解决方案 解决方案二:都报什么错?让俺们瞧瞧.解决方案三:什么乱七八糟的呀.解决方案四:蒙了解决方案五:中毒了.解决方案六:你的电脑可能中ARP的攻击了,你下载一个ARP的防火墙,开启应该没有问题了.解决方案七:不大明白

web services-服务器上的网页文件无法跳转到上级目录的文件

问题描述 服务器上的网页文件无法跳转到上级目录的文件 我在javascript里写了跳转到上级目录某个html文件的语句,在本地能正常执行,放在服务器上访问就会出错 不能找到文件是为什么 我在本地写的路径是../x.html 解决方案 如果是iis的话,检查下允许父路径访问是否开启.

php相对当前文件include其它文件的方法

 这篇文章主要介绍了php相对当前文件include其它文件的方法,实例分析了php中include引入文件的使用技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了php相对当前文件include其它文件的方法.分享给大家供大家参考.具体分析如下: 下面的代码先获得当前文件路径,然后通过相对路径包含其它php文件,在实际使用中非常有用 ? 1 2 3 4 5 <?php $currentDir = dirname(__FILE__); include $currentDir .

Java中的字符集编码入门(四) 网页文件的编码

接着上节的思路说,一个网页要想在浏览器中能够正确显示,需要在三个地方保持编码的一致:网页文件,网页编码声明和浏览器编码设置. 首先是网页文件本身的编码,即网页文件在被创建的时候使用什么编码来保存.这个完全取决于创建该网页的人员使用了什么编码保存,而进一步的取决于该人员使用的操作系统.例如我们使用的中文版WindowsXP系统,当你新建一个文本文件,写入一些内容,并按下ctrl+s进行保存的那一刻,操作系统就替你使用GBK编码将文件进行了保存(没有使用UTF-8,也没有使用UTF-16).而使用了

php获得网页文件跟路径

  php获得网页文件跟路径: echo $_SERVER['DOCUMENT_ROOT']." "; //获得服务器文档根变量 echo $_SERVER['PHP_SELF']." "; //获得执行该代码的文件服务器绝对路径的变量 echo __FILE__." "; //获得文件的文件系统绝对路径的变量 echo dirname(__FILE__); //获得文件所在的文件夹路径的函数 php获得当前url: $url_this = &q

jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法

 这篇文章主要介绍了jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法,涉及jQuery中load方法的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法.分享给大家供大家参考.具体分析如下: jQuery通过load()方法载入另外一个网页文件内的指定标签内容到div标签,如果我们可以加载网页b.html中的id为p1的标签内容到网页a.html的

浏览器-缓存到本地的网页文件canvas的动画效果无法显示是为什么?

问题描述 缓存到本地的网页文件canvas的动画效果无法显示是为什么? 学习h5效果的时候,通过浏览器的页面功能保存了含有通过canvas实现动画效果的网页,用域名访问时很正常,但从本地打开html文件时就是与之前打开的完全不同的页面,js和css文件没有缺失,请问这是什么原因?有没有办法通过打开本地的文件来查看效果 解决方案 http://jingyan.baidu.com/article/ab0b563093c6b6c15afa7db8.html?st=2&os=0&bd_page_t

java 网页-网页文件收费下载的功能如何实现

问题描述 网页文件收费下载的功能如何实现 求各位大神解答,各个网站是如何实现网站收费下载文件的?比如百度文库那些?一般常规的思路是什么?本人新手,感激不尽