【问题标题】:Apache: SSI inside SSIApache:SSI 内的 SSI
【发布时间】:2010-10-13 22:05:24
【问题描述】:

有没有办法可以在包含文件中包含包含文件? (快说五倍!)

例如:

index.html内:

<!--#include virtual="/include-1.shtml"-->

在include1.shtml内:

<!--#include virtual="/include-2.shtml"-->

所以树看起来像这样:index.html

按原样,这不适用于我的 Apache。第一个包含工作正常,但嵌套包含的内容不显示。

因为它是相关的,我在 Apache 2 上使用 XBitHack,并且我已经仔细检查了这两个文件都可以由网络用户执行。

帮助?

【问题讨论】:

  • 很高兴你问了这个问题,我一直都包含名为 .htm 的包含文件(呵呵,说起来很棘手)。我试图在 .htm 文件中嵌套另一个包含,但它没有工作,而且我从未想过(尽管它显然应该有)该文件需要正确的扩展名。所以,来自未来的万分感谢......

标签: apache2 include server-side-includes ssi


【解决方案1】:

确保 Apache 确实在尝试处理 *.shtml 文件。试试放

<!--#echo var="DATE_LOCAL" -->

在 *.shtml 文件中查看是否获得预期结果。您在 *.html 文件中得到相同的结果吗?如果您在两者中都没有看到日期,则说明您的配置已关闭。

【讨论】:

  • 是的,Apache 正在解析 .shtml 文件,但只有一层深度。它不会将它们解析为两个或更多级别。那是我的问题。
  • 这不是你的帖子所说的——你有一个被解析的 *.html 文件,而不是一个 *.shtml 文件。所以怀疑它停在*.shtml。
【解决方案2】:

我知道这个问题已有四年多的历史了,但是为了像我一样通过 StackOverflow 的惊人搜索引擎汁找到它的人的利益,我是这样做的。

在 Apache2 下,you need to know this。

相关文字:

此命令将包含文件的文本插入到已解析文件中。 SSI 文件可能是嵌套的,即包含的文件可能包含其他 SSI 语句(但在这种情况下,无论 XBitHack 的设置如何,都必须具有 .shtml 后缀)。

(强调我的)对我来说,解决方案在于取消注释默认 httpd.conf 中的两行:

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

…并将第一级包含文件的文件扩展名更改为.shtml:

index.html
└─┬─include1.shtml
└──── include2.html

轰隆隆!嵌套 SSI 就像冠军一样工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2012-08-22
    • 2012-10-25
    • 1970-01-01
    相关资源
    最近更新 更多