htmlbook.ru - Для тех, кто делает сайты
Шаг за шагом Графика для Web
Шаг за шагом > SSI по шагам > Что такое SSI (Server-Side Includes)

Шаг 1. Что такое SSI (Server-Side Includes)

Влад Мержевич

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

SSI (Server-Side Includes, включения на стороне сервера) позволяет добавлять контент во множество страниц, причем незаметно для пользователя. Это значит, что при запросе браузера определенного документа ему передается уже готовый, полностью сформированный код. Особенностью SSI является то, что это технология работает только под управлением веб-сервера, например, Apache.

Обычно веб-сервер проверяет на наличие встроенных команд не все файлы на сервере, а только с заданным расширением, как правило, shtml. Чтобы проверить, работает ли у вас SSI, создайте два файла в одной папке, один с именем index.shtml, а второй — content.html, как показано в примере 1.1.

Пример 1.1. Использование SSI

Файл index.shtml
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>SSI</title>
 </head>
 <body>
<!--#include file="content.html"-->
 </body>
</html>

Файл content.html
<h1>Работает!</h1>

В данном примере содержимое файла content.html встраивается в файл index.shtml в том месте, где стоит команда <!--#include file="content.html"-->. Обратите внимание, что файл content.html не содержит никаких тегов вроде <HTML> и <BODY>, иначе они также будут добавлены в исходный документ.

Если посмотреть итоговый код документа, то мы увидим следующее (пример 1.2).

Пример 1.2. Код, полученный в результате использования SSI

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>SSI</title>
 </head>
 <body>
<h1>Работает!</h1>
 </body>
</html>

Если ваш сервер поддерживает SSI, то после открытия файла index.shtml, вы увидите надпись «Работает!». В том случае, когда написано нечто другое или вообще ничего нет, возможны два варианта.

  1. Отображается надпись [an error occurred while processing this directive]. Это означает, что SSI работает, но в коде содержится ошибка. Например, добавлены лишние пробелы или указанного файла нет.
  2. Ничего не отображается. Следует посмотреть исходный код документа, если в нем видна строка <!--#include file="content.html"-->, значит веб-сервер не поддерживает SSI или оно не распространяется на расширение shtml.

Расширение shtml не является обязательным, для веб-сервера Apache его можно поменять на любое другое с помощью конфигурационного файла .htaccess. Для этого в корне сайта создается обычный текстовый файл с именем .htaccess (без расширения и с точкой вначале). В этом файле следует набрать строку, как показано в примере 1.3.

Пример 1.3. Содержимое файла .htaccess

AddHandler server-parsed .html

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

Замечание

Расширение shtml позволяет четко отделять файлы с директивами SSI от обычных HTML-файлов. Если вы установите проверку всех документов, в том числе и без SSI, то при этом возрастет нагрузка на веб-сервер и несколько увеличится время загрузки файлов.

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

Статья опубликована: 18.09.2005 Последнее обновление: 19.12.2008
SSI по шагам

Copyright Влад Мержевич, по всем вопросам пишите по адресу: vlad@htmlbook.ru