2012-08-28 151 views
2

我有一个10岁的Apache服务器(FreeBSD的),其中以下工作:阿帕奇SSI和可变

File1.htm

<!-- #set var="myDir" value="/dir" --> 

File2.htm

<!-- #include virtual="File1.htm" --> //sets myDir 
<!-- #include virtual="${myDir}/File3.htm" --> //loads /dir/File3.htm 

文件3 .htm

<!-- #include virtual="${myDir}/File4.htm --> //loads /dir/File4.htm 

在最近的Sus e 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> 

回答

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”在我的浏览器:

  • 启动文件2

    • 启动文件1

      /测试/计算器/ SSI

      完文件1

    /测试/计算器/ SSI

    • 开始文件3

      /测试/计算器/ SSI

      • 开始FILE4

        /测试/计算器/ SSI

        星期四,30 - 8 - 2012 21时45分57秒CEST

        结束FILE4

      最终文件3

    完文件2


您还应该:

  • 检查所有.htm文件,并在includ权限e文件夹(在你的例子中应该是“/ dir”文件夹),只是为了确保所有的文件都可以被Web服务器读取。
  • 检查你的Apache的错误错误日志

顺便说一句,我想,在缺少的结束引号的“File3.htm”只是一个错字。

+0

嗯。猜猜我必须再次尝试我的Linux测试,如果它适合你(和它应该基于文档)。 – DougN