ru en
Помощь
Версия для печати

SSI (Server Side Includes) — описание, директивы, параметры

Содержание

Общая информация

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

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

В стандартном дистрибутиве Apache есть модуль mod_include. Начиная с версии 1.2, он имеет расширенное количество директив и называется — XSSI (eXtended SSI). По умолчанию он включен в компиляцию.

Активация механизма Server-Side Includes

Мы предоставляем своим клиентам возможность использовать директивы SSI на тарифных планах «maxi» и «ultra», тарифный план «mini» позволяет исполнять SSI инструкции только в режиме «NoExec».

Любой документ, у которого будет установлен обработчик «server-parsed», будет сканироваться этим модулем, если включена опция «Includes».  При малом количестве документов с SSI,  лучше всего в файле httpd.conf (в случае администрирования в автоматическом режиме данные строки уже присутствуют) указать следующее:

AddType text/html .shtml  AddHandler server-parsed  .shtml

и устанавливать у таких файлов расширение .shtml. Если же все или почти все документы будут иметь директивы SSI, то лучше в файле конфигурации указать:

AddHandler server-parsed .html

Однако, стоит помнить, что в этом случае на сервер ляжет дополнительная нагрузка по проверке всех документов вида *.html.

Также следует включить в опции директории узла параметр Includes:

Options Includes

Практическое использование SSI

Пример 1.

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

<html> 
 <body> 
  <p>Документ с баннером внизу  страницы</p> 
  <!--#include virtual="/cgi-bin/ibanner.pl?web_site" --> 
 </body> 
</html>

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

Вот текст упомянутого выше сценария:

 #!/usr/local/bin/perl 
  $login=$ENV{"QUERY_STRING"}; 
     print "Content-type: text/html\n\n"; 
  ($IP)=($ENV{"REMOTE_ADDR"}=~s/\.//g); 
  srand($$+$IP+time); 
  $seed=int rand(10000000); 
     print "<a href=\"http://www.test.ru/cgi-bin/href/$login?$seed\">\n"; 
     print "<img src=\"http://www.test.ru/cgi-bin/banner/$login?$seed\"  width=468 height=60 border=0>\n";
     print "</a>\n"; 

Как видно из примера, даже во включаемых сценариях необходимо выводить HTTP заголовок.

В результате сканирования нашего простейшего документа пользователю будет возвращен примерно (с точностью до случайной величины) следующий документ:

<html> 
 <body>
  <p>Документ с баннером внизу страницы</p>
  <a href="http://www.test.ru/cgi-bin/href/web_site?348593">
    <img src="http://www.test.ru/cgi-bin/banner/web_site?348593"  width=468 height=60 border=0>
  </a>
 </body>
</html>

Пример 2.

Вторым распространенным применением SSI является формирование страницы из шаблона. В простейшем случае — это документ, в начало и конец которого вставляются шапка и подвал:

<html> 
 <body>  
 <head>
  <title>Test Page</title> 
 </head> 
   <!--#include virtual="/ssi/header.html" --> 
  <h1>Тестовая страница</h1>
   <p>Некий текст</p>
    <!--#include virtual="/ssi/global_menu.html" -->
    <!--#include virtual="/ssi/footer.html" -->
  </body>
</html>

Вставляемые блоки не обязательно должны быть законченными, например, header.html может заканчиваться тэгом <td>, а global_menu.html или footer.html начинаться с тэга </td>. Таким образом, даже при определённой технической сложности шапки и подвала документа, редактируемый документ выглядит чрезвычайно просто, и его легко редактировать.

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

Список всех директив SSI можно найти на http://httpd.apache.org/docs/1.3/mod/mod_include.html

Copyright © 2000-2024 Registrar R01
Информация для клиентов: +7 (495) 783-3-783; info@r01.ru
Техническая поддержка: +7 (495) 783-3-783; support@r01.ru
Центральный офис: г. Москва, Большой Гнездниковский переулок, дом 1, строение 2 ( м. «Тверская», выход №9, Бизнес-Центр «Вознесенский»).