Server Side Includes

Когда мы обсуждали различия между статическими и динамическими страницами, было сказано, что одним из способов формирования итоговой (отдаваемой пользователю) странички является механизм Server Side Includes, кратко SSI. Действительно, SSI - это, вероятно, один из самых простых или даже просто самый простой способ вынести повторяющиеся элементы страниц в отдельные файлы, что позволяет существенно облегчить модификацию оформления сайта при возникновении такой необходимости. Страница, которую вы сейчас просматриваете, первоначально была построена с использованием именно этой технологии. Использование SSI на начальном этапе создания настоящего сайта все еще отражается в том, что значительное число файлов, в которых хранятся его странички, имеют расширение .shtml. Однако, через некоторое время я применил для подключения внешних файлов средства PHP, так что фактически SSI у меня уже не используется.

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

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

"Сборка" страницы из частей html-кода.

Используется для того, чтобы вынести элементы, повторяющиеся на нескольких или на всех страницах сайта, в отдельные файлы и не дублировать в множестве веб-страниц один и тот же html-код. Например, можно вынести в отдельный файл header.inc общий заголовок страниц, включающий содержание начальных тэгов <html>, <head>, <body>, название и логотип сайта, главное меню, форму поиска по сайту, элементы дизайна, нужные ссылки и другие элементы, которые присутствуют на всех страницах. Таким же образом можно поместить в файл footer.inc нижнюю часть веб-страницы (завершающую часть дизайна, ссылки, конечные теги </body>, </html> и т.д.). Потом эти два файла будут подключаться при обращении пользователя к любой html-странице, так что код страницы будет выглядеть примерно таким вот образом:

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

В результате пользователь получит страницу, в которую будет сначала включено содержимое файла header.inc, далее основной текст страницы и затем содержимое файла footer.inc.

Примечание. Не торопитесь прямо следовать этому примеру, он приведен только для иллюстрации идеи. Дело в том, что заголовок каждой страницы должен быть индивидуальным, содержать название страницы, ее краткое описание и ключевые слова (смотри ниже описание тегов Title, Keywords, Description). Поэтому включать в содержание каждой страницы один и тот же файл header.inc было бы неразумно, поскольку в этом случае заголовок будет один и тот же у всех страниц. То есть при выборе тех частей страницы, которые выносятся в отдельные подключаеиые файлы надо вначале тщательно проанализировать повторяемость текста на разных страницах.

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

Запуск скриптов и размещение результатов их работы на создаваемой html-странице.

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

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

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

Здесь приведены только два простейших примера использования SSI для формирования страниц. Вообще же SSI является значительно более мощным инструментом, чем это может показаться из приведенных примеров. Полный список команд SSI вы найдете в описании Apache-модуля mod_include и в статьях, перечисленных в списке ссылок в конце этой страницы.

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

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

AddHandler server-parsed ext1

где .ext1 - расширение файлов, которые должны проверяться на наличие в них SSI.

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

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

Появление при использовании SSI-команд сообщения

[an error occured while processing this directive]
свидетельствует о возникновении ошибки при обработке SSI-инструкции веб-сервером. Возможные причины возникновения такой ошибки:

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

Более подробные сведения об использовании механизма Server Side Includes ищите по приведенным ниже ссылкам.

Полезные ресурсы

Загляните на досуге

Счетчики

Рейтинг@Mail.ru

LiveInternet

Rambler's Top100