| |
|
 |
Статьи
|
Обзор технологии SSI - Server
Side Includes
|
SSI - это набор команд, указывающий Apache'у включить в SSI страницу
некую информацию, например, вывод из программы PERL, значения
переменных окружения, статистику по файлам (время создания файла,
его размер), другие html или SSI файлы.
Использование SSI помогает значительно уменьшить размер файлов,
размещаемых на сервере и сделать процесс обновления контента и
дизайна Вашего сайта значительно проще. Например, если у некотго
сайта (как например, наш) сверху одинаковая для всех страниц шапка,
то достаточно создать файл shapka.html и во всех страницах вместо
HTML блока этой шапки вписать директиву
<!--#include virtual="shapka.html" -->
Таким образом, изменив содержание файла shapka.html Вы сможете
быстро обновить все станицы Вашего сервера.
Замечание: Когда кто-то, например, Вы или робот поисковой системы,
"прийдет" посмотреть содержание этой страницы, то он не увидит SSI
директив - он увидит собранный html.
Текущее время и время последнего обновления.
Для того, что бы сообщить пользователю время правки некой страницы,
можно включить директивы:
<!--#config timefmt="%d.%m.%Y %H:%M:%S" --><!--#flastmod
file="index.html" -->
Вывод:
25.12.2003 16:26:01
SSI директива config timefmt меняет формат вывода даты и времени на
нужный Вам:
Cегодня: <!--#config timefmt="%d.%m.%Y" --><!--#echo
var="DATE_LOCAL" --><br>
Сейчас: <!--#config timefmt="%H:%M:%S" --><!--#echo var="DATE_LOCAL"
-->
Вывод:
Cегодня: 29.02.2008
Сейчас: 20:42:19
Обработка ошибок
Иногда при некорректном программировании и использовании SSI
возникает ошибка. Выглядит это так:
[an error occurred while processing this directive]
Для того, что бы заменить это сообщение на нужное Вам и не терять
пользователей целесообразно заменить это сообщение на просьбу
сообщить об условиях ошибки.
Пример:
<!--#config errmsg="<b>Пожалуйста, сообщите <a
href=mailto:your@mail.ru>администратору</a> об ошибке.</b>" -->
Теперь при ошибке пользователь увидит:
Пожалуйста, сообщите администратору об ошибке.
Для удобства пользователя целесообразно помочь ему, например,
вставив в SUBJECT или BODY письма значения входящих переменных, а
так же локальное время для отслеживания этой ошибки в error.log
сервера.
Крутилка баннеров
Если Вы размещаете на Вашем сайте рекламу, например, коммерческие
баннеры или баннеры баннерных сетей и хотите минимизировать свои
временные затраты по размещению баннеров на Вашем сайте, то самый
простой путь - создать перловый скрипт, управляющий выдачей
баннеров, вернее html кода баннеров, и на всех страницах вставить
директиву его включения.
<!--include virtual="/cgi-bin/showbanner.pl" -->
Далее в нем Вы сможете прописать настройку таргеттинга или показ
конкретных баннеров на конкретных страницах.
Если, по каким-либо причинам, использование PERL затруднено, то
можно обойтись средствами SSI. Создается SSI файл, управляющий
выдачей баннеров. Например, если у Вас три баннера, причем первый
баннер надо показывать в два раза чаще, чем остальные, то этот файл
может выглядеть следующим образом.
<!--#config timefmt="%S" --><!--#set var="dt" value="$DATE_LOCAL"
-->
<!--#if expr="$dt < 30" -->баннер 1<!--#elif expr="$dt < 45"
-->баннер 2<!--#else -->баннер 3<!--#endif -->
Вывод (обновите страницу для получения другого баннера) :
баннер 1
В данном примере в зависимости от текущей секунды выбирается баннер
и показывается. Аналогичным способом, проверяя время суток Вы можете
выдавать приветствие поосетителю с указанием времени суток,
например, "Доброе утро", "Добрый вечер" и прочее.
Информация о пользователе
Когда пользователь, вернее его браузер запрашивает некую страницу,
то можно узнать откуда он пришел, каким браузером и провайдером
пользуется.
Твой IP - <!--#echo var="REMOTE_ADDR" --><BR> Твой броузер -
<!--#echo var="HTTP_USER_AGENT" --><BR> Мой сервер - <!--#echo
var="SERVER_NAME" --><BR> Ты пришел со страницы - <!--#echo
var="HTTP_REFERER" --><BR>
Вывод:
Твой IP - 86.57.189.43
Твой броузер - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
SV1)
Мой сервер - www.be1.ru
Ты пришел со страницы - http://www.be1.ru/articles/
|
|
|