服务器端包括不适用于嵌套调用

时间:2017-05-23 17:34:18

标签: apache ssi server-side-includes shtml

我使用服务器端包含来组织我的文件。

嵌套文件似乎不起作用。例如: -

index.shtml - 这很好用

<!doctype html>
<html lang="en">
    <!--#include virtual="partials/head.shtml"-->
<body>
<!--#include virtual="partials/components/ads/horizontal-banner.shtml"-->
<div id="site-wrapper">
    <header id="site-header">
        <!--#include virtual="partials/header.shtml"-->
    </header>

    <div id="site-body">
        <!--#include virtual="partials/pages/home.shtml"-->
    </div>

    <footer id="site-footer">
        <!--#include virtual="partials/footer.shtml"-->
    </footer>
</div>
<!--#include virtual="partials/common.shtml"-->

home.shtml 内,还有另一个电话

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

以下是项目结构: -

project
 - css
 - assets
 - js
 - partials
   - components
      - ads
        horizontal-banner.shtml
        vertical-banner.shtml
      newsletter.shtml
      help.shtml
   - pages
      home.shtml
      about.shtml
   header.shtml
   footer.shtml
   head.shtml
   common.shtml
index.shtml

1 个答案:

答案 0 :(得分:0)

查看Apache的文档 - Server Side Includes

  

使用包含文件作为页眉和/或页脚可以减少   这些更新的负担。你只需制作一个页脚文件,然后   然后使用include SSI命令将其包含在每个页面中。该   include函数可以确定要包含哪个文件   文件属性或虚拟属性。 file属性是一个文件   path,相对于当前目录。这意味着它不可能   绝对文件路径(以/开头),也不能包含../ as   那条路的一部分。 虚拟属性可能更有用,并且   应该指定相对于正在提供的文档的URL。它可以   以/开头,但必须与文件位于同一服务器上   提供服务。

尝试更改 home.shtml ,如下所示:

<!--#include virtual="partials/components/newsletter.shtml"-->

..并且 newsletter.shtml 文件应该以类似的方式更改。