серверная часть не работает для вложенных вызовов

Я использую серверную часть для организации своих файлов.

Вложенные файлы не работают. Например: -

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

person Stacy J    schedule 23.05.2017    source источник


Ответы (1)


Посмотрите документацию Apache — Включает серверную часть:

Использование включаемого файла для верхнего и/или нижнего колонтитула может уменьшить нагрузку на эти обновления. Вам просто нужно создать один файл нижнего колонтитула, а затем включить его на каждую страницу с помощью команды include SSI. Функция включения может определить, какой файл включать либо с атрибутом файла, либо с атрибутом виртуального. Атрибут файла — это путь к файлу относительно текущего каталога. Это означает, что он не может быть абсолютным путем к файлу (начиная с /) и не может содержать ../ как часть этого пути. Атрибут virtual, вероятно, более полезен и должен указывать URL-адрес относительно обслуживаемого документа. Он может начинаться с символа /, но должен находиться на том же сервере, что и обслуживаемый файл.

Попробуйте изменить home.shtml следующим образом:

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

.. и файл newsletter.shtml следует изменить аналогичным образом.

person Mateusz Kleinert    schedule 23.05.2017
comment
Это сработало, когда я поместил папку в htdocs внутри xampp. Когда я помещаю его в обычный каталог, он не работает. Я не знаю, почему .... - person Stacy J; 24.05.2017
comment
Вы пытались посмотреть файлы журнала доступа и ошибок Apache? Должна быть информация о неправильном пути, если проблема заключается в местоположении. - person Mateusz Kleinert; 24.05.2017