Apache--SSI 服务器端包含 支持include

<!--#include virtual="/html/attention/expo.html"-->  通过改正引入文件的路径,成功引入。这里做一下笔记:

【SSI】

     Server Side Include,服务器端嵌入(包含),以apache为例,SSI是通过apche的mod_include模块实现的,是指服务器将内容发送给浏览器 之前,根据页面中的指令,对页面进行处理的过程。这是apache中文手册的定义:'SSI是嵌入HTML页面中的指令,在页面被提供时由服务器进行运算,以对现有HTML页面增加动态生成的内容,而无须通过CGI程序提供其整个页面,或者使用其他动态技术。        

至于什么时候应当用SSI,而什么时候应当用某些程序生成整个页面,取决于页面中有多少内容是静态的,又有多少内容需要在每次页面被提供时重新计算SSI一种增加小段动态信息的好方法,比如当前时间。如果你的页面大部分内容是在被提供时动态生成的,那就要另找方案了。


我遇到的是在文章页引入“关注”模块,文章是不变的,但是关注每天都不同,因此采用SSI,以便旧的文章页的关注也能够实时更新。

如何使你的Apache服务端支持SSI?

Apache默认是不支持SSI的,需要我们更改httpd.conf来进行配置。

我这里以windows平台的Apache 2.0.x为例:打开conf目录下的httpd.conf文件,

1. 搜索“AddType text/html .shtml”,搜索结果:  # AddType text/html .shtml  # AddOutputFilter INCLUDES .shtml  把这两行前面的#去掉。  

       (解释: 并非所有文件中的ssi指令都会被解析,必须告诉Apache应该解析哪些文件。如果我们的指令放在了.htm类型的文件中,那么就需要在上面两条命令中 分别加入.htm一项,否则便不会解析未指定的文件中的ssi命令。 因为命令是放在注释中的,故不解析的将显示空。

          有两种方法使Apache解析带有特定后缀名的文件,上面这是一种,另一种是使用 xBitHack命令,详见apache手册)

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

SSI指令基本格式

  程序代码:   <!-– 指令名称="指令参数">

         如 程序代码:   <!--#include file="info.htm"-->

         说明: 1.<!-- -->;是HTML语法中表示注释,当WEB服务器不支持SSI时,会忽略这些信息。  

              2.#include 为SSI指令之一。  

              3.file 为include的参数,info.htm为参数值,在本指令中指将要包含的文档名。  

         注意: 1.<!--与#号间无空格,只有SSI指令与参数间存在空格。  

              2.上面的标点="",一个也不能少。  

              3.SSI指令是大小写敏感的,因此参数必须是小写才会起作用。

SSI指令

     除了include指令,ssi还有很多很帅的指令,如:echo config exec set 甚至条件表达式if else ,详细见apache手册。

#include指令详解

Include命令可以把其它文档中的文字或图片插入到当前被解析的文档中,这是整个SSI的关键所在。通过Include命令只需要改动一个文件就可以瞬间更新整个站点!   

Include命令具有两个不同的参数:  

      Virtual:给出到服务器端某个文档的虚拟路径。例如:<!--#include virtual="/includes/header.html" --> (我的理解就是相对于网站根目录的路径)  

      File:给出当前目录的相对路径其中不能使用"../",也不能使用绝对路径。例如: <!--#include file="header.html" -->   这就要求每一个目录中都包含一个header.html文件。(我的理解就是被包含的文件与该文件同级或者下一级目录或下下..级目录下的文件,如同级的test.html,或者同级目录下的test/test1.html

在使用<!--#include virtual=时,遇到一个问题,就是引入的文件同其不在同一个域名下,但是在同一台服务器上。通过在当前域名下建立到其他域名的文件的软链接(符号链接解决。

SSI固然不能替代CGI或者其他动态页面技术,但它是在页面中插入众多小型的动态片段的优秀方法,而无须大量额外的操作。


<!--#include file="header.html"-->


你可能感兴趣的:(Apache--SSI 服务器端包含 支持include)