1

我正在使用用 PHP 编写的Ganglia-web-frontend 。它使用模板文件来添加个人页眉/页脚。我想使用我编写的一组 SSI 页面,但 apache 不解释 SSI 代码。

更清楚地说,ganglia 用于$tpl = new TemplatePower( template("$header.tpl") );包含我的头模板文件。在我的 header.tpl 文件中,我放了:<!--#include virtual="/include/header.shtml" -->这是我包含的文件(并且与我的个人页面/脚本完美配合)。

如果查看我在 firefox (ctrl+U) 中获得的 HTML 代码,我会看到 apache 已将 SSI 区域<!--#include virtual="/include/header.shtml" -->作为评论包含在内,并且没有对其进行解释。

我想这与解释/执行事物的顺序有关,但我找不到让它工作的方法。有人有想法吗?如果需要,我也可以访问 apache 配置。

提前致谢

编辑:

按照 Sasha 的建议,我尝试添加

AddType text/html .tpl 
AddHandler server-parsed .tpl
AddOutputFilter INCLUDES .tpl

/etc/apache2/httpd.conf但这无济于事。我不明白...

编辑 2:

我想这可能是 PHP TemplatePower模块的问题。但我无法让它工作。我也尝试$tpl->assignInclude( "header", "./header.tpl" );在神经节来源中添加,但这无济于事。

4

2 回答 2

4

Apache 是否配置为将.tpl文件作为服务器端包含进行预处理?如果不是,它将忽略这些文件中的 SSI 指令。

mod_include 文档中的“启用服务器端包含”部分详细介绍了如何配置它。您需要确保它.tpl存在于AddTypeandAddOutputFilter指令中。

于 2014-05-09T09:18:58.480 回答
2

您正在将模板加载为TemplatePower模板。因此,不是 apache 托管该 .tpl 文件,而是您的脚本是通过该TemplatePower对象托管的。

因此,这超出了 apache 的内容处理程序和动作处理程序的范围。

如果您将 PHP 作为 apache SAPI 运行,则可以使用该virtual()函数。

然后,您可以扩展模板引擎以解释那些包括虚拟 SSI 命令并调用该virtual()函数。

所以这里的关键点真的是Apache最终需要通过一个子请求来执行shtml模板。

于 2014-05-11T19:45:03.480 回答