×
Техническая документация

SSI — server side includes

SSI (Server Side Includes) — технология позволяющая удобно «собирать» веб-страницы из частей, вставлять в них результаты выполнения CGI-скриптов и придавать страницам прочие элементы динамики.

Какие файлы обрабатываются как SSI, как добавить свои файлы

По умолчанию веб-сервер проверяет на предмет наличия SSI-инструкций только файлы с расширением *.shtml. Например, поместите SSI-команды в файл index.shtml и это сразу будет работать. Если есть необходимость проверять на наличие SSI другие файлы, соответствующие расширения для проверки можно добавить, поместив в файл .htaccess следующую инструкцию:

AddHandler server-parsed .ext1

.ext1 тут — расширение файлов, которые должны проверяться на наличие в них SSI. Не рекомендуется добавлять расширения .html и .htm, так как в этом случае сервер будет проверять все html-файлы на предмет наличия SSI-вставок. Это может привести к совершенно бессмысленной нагрузке на сервер.

Ограничения

Пользователям хостинга доступны все директивы SSI за исключением одного ограничения для абонентов, которые используют тариф не предусматривающий запуск собственных cgi-скриптов. Для этих клиентов запуск скриптов недоступен и через SSI-инструкции. То есть, в терминах Apache для них действует опция NoExec.

Как работает и для чего используется SSI

Технологию SSI начинающие пользователи в основном могут использовать для двух целей: для «склейки» страницы из частей html-кода и для запуска скриптов с целью размещения результатов их работы на создаваемой html-странице. В первом случае с диска сервера читаются соответствующие файлы и вставляются в код страницы, откуда был вызван SSI-код. Во втором случае веб-сервер, найдя SSI-инструкцию, запускает скрипт, размещенный на диске, и вставляет в итоговую страницу результат выполнения скрипта.

Рассмотрим подробнее:

  • «Склейка» страницы из частей html-кода. Используется для того, чтобы не дублировать в множестве веб-страниц один и тот же html-код. Например, можно вынести весь дизайн в SSI-включения, которые подключать в конкретном html-файле, в котором будет содержаться только текст конкретной страницы.

    Поместим в файл header.inc «заголовок» веб-страницы (элементы дизайна, меню, нужные ссылки и другие элементы, которые присутствуют на всех страницах), а в файл footer.inc поместим нижнюю часть веб-страницы (завершающую часть дизайна). Далее создадим файл с именем index.shtml, который будет выглядеть так:

    <!--#include file="header.inc"-->
    А здесь у нас будет основной текст страницы
    <!--#include file="footer.inc"-->;

    Предполагается, что в файлы-включения мы поместили html-код хотя бы вроде начальных/конечных тэгов <html>, <head>, <body> и так далее. В результате пользователь получит страницу, в которую будет сначала включено содержимое файла header.inc, далее слова «А здесь у нас будет основной текст страницы» и затем содержимое файла footer.inc.

    Такое использование SSI удобно с точки зрения отсутствия необходимости все время вставлять во вновь создаваемые страницы один и тот же html-код, а также с точки зрения удобства изменения основных элементов сайта — меняем в одном месте html-код, который сразу меняется на всех страницах по всему сайту.

  • Запуск скриптов и размещение результатов их работы на создаваемой html-странице. Таким образом можно разместить на странице практически любую функциональность, которая доступна для написания на языке perl, например (или практически на любом другом поддерживаемом на хостинге.

    Например, у вас есть скрипт-счетчик, который показывает сколько посетителей заходило на вашу страницу и находится он по адресу /cgi-bin/count.pl. Включим результат его работы в веб-страницу. Для этого в коде html-страницы разместим такой SSI-код:

    <!--#include virtual="/cgi-bin/count.pl"-->

    В итоге на странице, которую увидит пользователь, будет размещен счетчик, который вывел скрипт /cgi-bin/count.pl.

    Полный список команд SSI вы найдете в описании Apache-модуля mod_include

Еще примеры использования SSI

Инструкции SSI можно использовать не только для запуска скриптов и включения файлов. Также SSI позволяет работать с переменными окружения веб-сервера, производить манипуляции с датами, выполнять команды по условию и так далее. Хорошее описание наиболее востребованных применений команд SSI вы найдете на сервере CIT Forum.

Диагностика ошибок при использовании SSI

Если при использовании SSI-команд на своих html-страницах вы увидели сообщение "[anerror occured while processing this directive]", это свидетельствует о возникновении ошибки при обработке SSI-инструкции веб-сервером.

Возможные причины возникновения такой ошибки:

  • неверно задан путь к включаемому файлу/скрипту — такой файл не существует
  • неверно работает cgi-скрипт, который вы пытаетесь вставить в страницу
  • тариф, по которому работает ваш сервер, не позволяет использовать выполнение cgi-скриптов

Для удобства пользователей мы размещаем здесь ссылки, которые будут полезны при самостоятельном изучении SSI и при работе с этой технологией на практике.