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, и я дважды проверил, что оба файла исполняются веб-пользователем.
Помогите?
2 ответа
Убедитесь, что Apache действительно пытается обработать файлы *.shtml. Попробуйте положить
<!--#echo var="DATE_LOCAL" -->
в файле *.shtml и посмотреть, если вы получите ожидаемые результаты. Получаете ли вы тот же результат в *.html файле? Если вы не видите даты в обоих, ваша конфигурация отключена.
Я знаю, что этому вопросу уже более четырех лет, но в интересах людей, которые, как и я, находят его благодаря удивительному соку поисковой системы Stackru, вот как я заставил его работать.
Под Apache2 вам нужно это знать.
Соответствующий текст:
Эта команда вставляет текст включенного файла в анализируемый файл. Файлы SSI могут быть вложенными, то есть включаемый файл может содержать дополнительные операторы SSI (но в этом случае должен иметь суффикс.shtml независимо от настройки XBitHack).
(Акцент мой) Для меня решение проблемы заключается в том, чтобы раскомментировать две строки по умолчанию httpd.conf
:
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
… И изменив расширение имени файла включаемого файла первого уровня на.shtml:
index.html └─┬─ include1.shtml └─── include2.html
Boom! Вложенный SSI работает как чемпион.