SSI и LiteSpeed Web Server

Когда-то давно я делал сайты на инклюдах SSI. Несколько таких работают и до сих пор. Как оказалось не совсем. Подробности под катом.

Для обеспечения логики сайта я использовал переменные среды. В зависимости от сервера их порой приходилось допиливать. Всё работало, пока я не встретил очередную версию LiteSpeed Web Server. Уж не знаю какая версия стоит у IHC.ru, но SSI там работают весьма избирательно.

Я работаю по приницпу контент отдельно, дизайн отдельно. Суть проблемы в том, что мои страницы инклудят куски шаблона, в практически чистые файлы контента. Шаблоны через переменные окружения отдают то что нужно. Но не этот раз. Выглядит это так.

Например, файл index.html инклудит header.html и footer.html, котрые проверяют кто их инклудил и выдают нужное. Проверка происходит по переменным $DOCUMENT_NAME, $DOCUMENT_URI или т.п. в записимости от хостинга/сервера. Так вот на Лайтспиде из header.html или footer.html оказалось невозможным получить имя index.html.

Самое смешное, что #printenv выдаёт аж 2 переменных, содержащих index.html: REQUEST_URI и ESI_REFERER, однако обращение к ним (для проверки я использовал #echo) выдаёт во втором случае пустую строку, а в первом - имя файла в котором она вызвана (header.html или footer.html), вместо имени index.html.

И это не фича, а баг, т.к. вызванные из 1 файла команды #printenv и #echo encoding="none" var="REQUEST_URI" выдают разные значения одной переменной!

Видимо не случайно на каком-то этапе развития, у этого сервера в ФАКе было написано примерно так: "нет мы не держим SSI используйте PHP & etc".

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

Метки:

Leave a comment


Comment moderation is enabled on this site. This means that your comment will not be visible until it has been approved by an editor.