我有一个10岁的Apache服务器(FreeBSD),其中有以下工作:
File1.htm
<!-- #set var="myDir" value="/dir" -->
File2.htm
<!-- #include virtual="File1.htm" --> //sets myDir
<!-- #include virtual="${myDir}/File3.htm" --> //loads /dir/File3.htm
File3.htm
<!-- #include virtual="${myDir}/File4.htm --> //loads /dir/File4.htm
在最新的Suse Linux上使用最新的Apache,似乎就是这样 myDir未在File3.htm中定义,因此无法找到并加载File4。
因此File2可以加载File3,但File3无法加载File4。它适用于FreeBSD上已有10年历史的Apache,但不适用于Linux上的最新Apache ....
有什么想法吗?
编辑为了完整起见,这基本上就是配置文件:
DocumentRoot "/srv/www/htdocs"
<Directory "/srv/www/htdocs">
Options Includes
AddType text/html .htm
AddOutputFilter INCLUDES .htm
AllowOverride None
Order allow,deny
Allow from all
</Directory>
答案 0 :(得分:2)
我已经在我的Ubuntu 11.04系统(使用Apache 2.2.17)上进行了测试,我根本没有遇到任何问题。
以下是我使用过的文件:
File1.htm (位于File2.htm的同一文件夹中)
<ul>
<li>
<p>Start File1</p>
<!--#set var="myDir" value="/test/stackoverflow/ssi" -->
<!--#echo var="myDir" -->
<p>End File1</p>
</li>
</ul>
File2.htm (位于File1.htm的同一文件夹中)
<!DOCTYPE html>
<html>
<head>
<title>Apache SSI test</title>
</head>
<body>
<ul>
<li>
<p>Start File2</p>
<!--#include virtual="File1.htm" -->
<p><!--#echo var="myDir" --></p>
<!--#include virtual="${myDir}/File3.htm" -->
<p>End File2</p>
</li>
</ul>
</body>
</html>
File3.htm (位于“ssi”子文件夹中)
<ul>
<li>
<p>Start File3</p>
<p><!--#echo var="myDir" --></p>
<!--#include virtual="${myDir}/File4.htm" -->
<p>End File3</p>
</li>
</ul>
File4.htm (位于“ssi”子文件夹中)
<ul>
<li>
<p>Start File4</p>
<p><!--#echo var="myDir" --></p>
<p><!--#echo var="DATE_LOCAL" --></p>
<p>End File4</p>
</li>
</ul>
这是我的“.htaccess”文件:
Options +Includes
AddType text/html .htm
AddOutputFilter INCLUDES .htm
以下是我在浏览器中请求“File2.htm”页面时得到的输出:
启动File2
启动File1
/测试/计算器/ SSI结束File1
/测试/计算器/ SSI
启动File3
/测试/计算器/ SSI
启动File4
/测试/计算器/ SSI
星期四,2012年8月30日21:45:57 CEST
结束File4
结束File3
结束File2
你还应该:
顺便说一下,我认为你的“File3.htm”中缺少的结束语只是一个错字。