Apache: SSI внутри SSI

Есть ли способ включить включаемые файлы внутри включаемых файлов? (Скажи это пять раз быстро!)

Например:

Внутри index.html:

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

Внутри include1.shtml:

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

Итак, дерево выглядит так: index.html ‹-- include_1.shtml ‹-- include_2.shtml

Как есть, это не работает на моем Apache. Первое включение работает нормально, но содержимое вложенного включения не отображается.

Насколько это уместно, я использую XBitHack на Apache 2, и я дважды проверил, что оба файла исполняются веб-пользователем.

Помощь?


person neezer    schedule 17.03.2009    source источник
comment
Я так рад, что вы задали этот вопрос, я всегда включал включаемые файлы (хех, сложно сказать) с именами .htm. И я попытался вложить еще одно включение в файл .htm, и это не сработало, и мне никогда не приходило в голову (хотя, очевидно, должно было быть), что этому файлу нужно правильное расширение. Так что мега-спасибо из будущего...   -  person Michael Davis    schedule 26.04.2011


Ответы (2)


Убедитесь, что Apache действительно пытается обработать файлы *.shtml. Попробуйте поставить

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

в файле *.shtml и посмотрите, получите ли вы ожидаемые результаты. Вы получаете тот же результат в файле *.html? Если вы не видите даты в обоих, ваша конфигурация отключена.

person John Feminella    schedule 17.03.2009
comment
Да, Apache анализирует файлы .shtml, но только на один уровень. Он не анализирует их на два или более уровней в глубину. Это моя проблема. - person neezer; 17.03.2009
comment
Это не то, о чем говорится в вашем сообщении - у вас есть файл *.html, который анализируется, а не файл *.shtml. Поэтому подозрительно, что он останавливается на *.shtml. - person John Feminella; 17.03.2009

Я знаю, что этому вопросу больше четырех лет, но для людей, которые, как и я, находят его благодаря удивительной соке поисковой системы StackOverflow, вот как я заставил его работать.

В Apache2 вам необходимо знать это .

Соответствующий текст:

Эта команда вставляет текст включенного файла в анализируемый файл. Файлы SSI могут быть вложенными, то есть включенный файл может содержать дополнительные операторы SSI (но в этом случае должен иметь суффикс .shtml независимо от настройки XBitHack).

(выделено мной) Для меня решение заключалось в раскомментировании двух строк в httpd.conf по умолчанию:

AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

… и изменив расширение имени файла включаемого файла первого уровня на .shtml:

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

Бум! Вложенный SSI работает как чемпион.

person Dave Land    schedule 04.12.2013