SSI-include命令的路径使用
SSI的命令参数
apache服务器开始SSI:【Apache】服务器开启SSI-include包含模块
ssi (server side include),将内容发送到浏览器之前,可以使用“服务器端包含 (SSI)”指令将文本、图形或应用程序信息包含到网页中。
Include 命令可以把其它文档中的文字或图片插入到当前被解析的文档中,这是整个SSI的关键所在。通过Include命令只需要改动一个文件就可以瞬间更新整个站点!
Include 命令具有两个不同的参数:
Virtual:给出到服务器端某个文档的虚拟路径。
File:给出到当前目录的相对路径,其中不能使用"../",也不能使用绝对路径。
基本应用
// 从项目根目录开始 引用includes目录下的header.html文件
<!--#include virtual="/includes/header.html" -->
// 相对目录,只在当前同级目录下搜索header.html文件
<!--#include file="header.html" -->
// 这就要求每一个目录中都包含一个header.html文件。
一些路径概念
virtual 中路径:
以“/",开头,表示虚拟目录的根目录。
直接写文件,则表示当前文件所在文件夹下的文件。通过测试,virtual 同样不支持.. 。碰到这种情况,不会解析。
Include命令
Include命令可以把其它文档中的文字或图片插入到当前被解析的文档中,Include命令具有两个不同的参数:
virtual:给出到服务器端某个文档的虚拟路径。不能使用..。(includes为站点的根目录名称。具体对照下方案例。)
File:给出到当前目录的相对路径,其中不能使用"../",也不能使用绝对路径。
具体案例
比如如下目录结构:
--father(根目录)
|---index.html
|---son1
|---s1.html
|---child1
|---c1-1.html
|---son2
|---child2-1
|---c2-1.html
|---child2-2
|---ssi
|---common.html
比如在index.html中,引用ssi
以下两种方式都可以:
<!--#include file="ssi/common.html"-->
<!--#include virtual="/ssi/common.html"-->
注意使用include file的时候,不可以/ssi/common.html,file是相对于当前文件的同级目录。
在c2-1.html和s1.html中
如果要引用common.html,就不可以使用file了,就必须使用virtual。
<!--#include virtual="/ssi/common.html"-->
从根目录向下寻找包含文件。经测试,virtual属性在windows和linux下都可以正常使用。
如果需要在s1.html中包含c1-1.html
这种情况就可以使用file了,就无需从根目录开始查找:
<!--#include virtual="child1/c1-1.html"-->
综上所述,我们可以看到file属性只能包含同级乃至同级目录下的子文件,如果要包含根目录下文件,就要使用virtual了。