SSI расшифровывается как Server Side
Include. SSI - это набор команд, позволяющий включить в страницу
информацию, недоступную средствами HTML, такую как вывод программ, значения
переменных окружения и статистику по файлам (размер, дата создания и др.). Все
это и более позволяют делать CGI-скрипты, но зачем писать целый скрипт для
получения размера файла, если можно воспользоваться SSI?:)
SSI работает очень просто: при получении запроса на документ,
содержащий SSI-директивы, http-сервер обрабатывает документ, выполняет все
SSI-директивы, а получившийся в результате документ возвращает клиенту.
Http-сервер не проверяет автоматически все документы на наличие SSI-директив, а
только те, которые относятся к типу, указанному в настройках сервера.
Для указания http-серверу, какие документы считать содержащими
SSI-директивы, в srm.conf, находящемся в /etc/httpd/conf надо
раскомментировать следующие строки:
AddType text/html .shtml AddHandler server-parsed
.shtml
После этого все документы с расширением .shtml будут
проверяться на SSI-директивы. Но удобнее будет определить чтобы все
.html-файлы могли содержать SSI. Это делается добавление в
srm.conf следующих строчек:
AddType text/html .html # не обязательно, т.к. он и так
описан. AddHandler server-parsed .html
Теперь надо разрешить выполнение SSI в каталоге, в котором
лежат твои файла. Найди в access.conf описание каталога, в котором лежат
твои html'ы и добавь в его Options директиву Includes:
#было так Options Indexes #стало так Options Indexes
Includes
Если твой каталог не прописан, его надо прописать. Почитай доку
по Apache, чтоб узнать как
это делается.:) А если у тебя нет возможности изменять srm.conf или
access.conf, т.е. ты не root, тогда за пивом, а потом к админу.:)
SSI-директивы включаются в html-код в виде коментариев, но
определенного формата:
<!--#SSI_директива="параметры" -->
Использовать можно следующие SSI-директивы:
- echo var
-
Используется для вывода значения переменной окружения.
Твой IP - <!--#echo var="REMOTE_ADDR"-->
<BR> Твой броузер - <!--#echo var="HTTP_USER_AGENT"-->
<BR> Мой сервер - <!--#echo var="SERVER_NAME"-->
<BR> Ты пришел со страницы - <!--#echo
var="HTTP_REFERER"--> <BR>
А вот вывод:
Твой IP - 62.0.149.206 Твой броузер - Mozilla/4.0 (compatible; MSIE
5.0; Windows 98; DigExt) Мой сервер - citforum.ru Ты пришел со страницы -
http://citforum.ru/
- include file
include virtual
-
Включает в html-файл в месте, где идет вызов SSI, содержимое
указанного файла. Отличие include file от include virtual в том,
что в первом случает используется файл, находящийся в том же каталоге, что и
html-файл, во втором случает указывается путь к файлу относительно текущего
каталога. Если с помощью include file или include virtual
включается cgi-скрипт, то в содержимое страницы попадет вывод cgi-скрипта, а не
его содержание.
- fsize file
-
Вставляет размер указанного файла.
Размер файла этой страницы: <!--#fsize
file="ssi.shtml"--> <BR>
Вывод:
Размер файла этой страницы: 12k
- flastmod file
-
Вставляет время последней модификации указанного файла.
Время последней модификации файла этой страницы: <!--#flastmod
file="ssi.shtml"--> <BR>
Вывод:
Время последней модификации файла этой страницы: Wednesday, 21-Jun-2000
16:31:33 MSD
- exec cmd
exec cgi
-
Запускает внешнюю программу (exec cmd) или cgi-скрипт
(exec cgi) и вставляет в содержимое страницы вывод.
- config errmsg
config sizefmt config timefmt
-
Изменяет различный параметры конфигурации SSI. config
errmsg изменяет стандартное собщение об ошибке на введенное пользователем.
Сообщение об ошибке возникает при неправильном выполнении SSI-директивы,
например при отсутствии cgi-скрипта, который ты пытаешься запустить.
Это стандартная ошибка при запуске скрипта, которого нет: <BR>
<!--#exec cgi="/cgi-bin/nonexistence.pl"--> <BR> А
теперь заменим сообщение об ошибке и повторим: <BR> <!--#config
errmsg="Ошибка, пишите <a href=mailto:dh@null.ru>автору
ошибки</a>"--> <!--#exec
cgi="/cgi-bin/nonexistence.pl"--> <BR>
Вывод:
Это стандартная ошибка, возникающая при запуске скрипта, которого нет:
[an error occurred while processing this directive] А теперь заменим
сообщение об ошибке и повторим: Ошибка, пишите автору ошибки
Директива config sizefmt изменяет формат вывода
размера файла.
Размер файла этой страницы в килобайтах: <!--#config
sizefmt="abbrev"--> <!--#fsize
file="ssi.shtml"--> <BR> Размер файла этой страницы в
байтах: <!--#config sizefmt="bytes"--> <!--#fsize
file="ssi.shtml"--> <BR>
Вывод:
Размер файла этой страницы в килобайтах: 12k Размер файла этой
страницы в байтах: 12,463
Директива config timefmt меняет формат вывода даты и
времени.
Время модификации файла этой страницы в секундах с 01.01.1970:
<!--#config timefmt="%s"--> <!--#flastmod
file="ssi.shtml"--> <BR> Время модификации файла этой
страницы в читабельном виде: <!--#config timefmt="%d.%m.%Y
%H:%M:%S"--> <!--#flastmod file="ssi.shtml"-->
<BR>
Вывод:
Время модификации файла этой страницы в секундах с 01.01.1970:
961590693 Время модификации файла этой страницы в читабельном виде:
21.06.2000 16:31:33
Параметры, используемые в config timefmt:
Формат |
Описание |
Пример |
%a |
Аббревиатура названия дня недели |
Sun |
%A |
Полное название дня недели |
Sunday |
%b |
Аббревиатура названия месяца |
Jan |
%B |
Полное название месяца |
January |
%d |
День месяца |
01 (не 1) |
%D |
Дата в формате "%m/%d/%y" |
01/31/90 |
%e |
День месяца |
1 |
%H |
Часы в 24-часовом формате |
13 |
%I |
Часы в 12-часовом формате |
01 |
%j |
День года |
235 |
%m |
Номер месяца |
01 |
%M |
Минуты |
03 |
%p |
AM|PM |
AM |
%r |
Время в формате "%I:%M:%S %p" |
11:35:46 PM |
%S |
Секунды |
34 |
%s |
Время в секундах с 01.01.1970 |
957228726 |
%T |
Время в формате "%H:%M:%S" |
14:05:34 |
%U |
Неделя года |
49 |
%w |
Номер дня недели |
5 |
%y |
Год в формате ГГ |
95 |
%Y |
Год в формате ГГГГ |
1995 |
%Z |
Временная зона |
MSK |
- printenv
-
Выводит все переменные окружения. Параметров не имеет.
Список переменных окружения:<BR> <!--#printenv
-->
Вывод:
Список переменных окружения: DOCUMENT_ROOT=/webdata/citforum/htdocs
HTTP_ACCEPT=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
HTTP_ACCEPT_ENCODING=gzip, deflate HTTP_ACCEPT_LANGUAGE=ru
HTTP_CONNECTION=Keep-Alive HTTP_COOKIE=b=b HTTP_HOST=citforum.ru
HTTP_REFERER=http://citforum.ru/ HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE
5.0; Windows 98; DigExt) PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
REMOTE_ADDR=62.0.149.206 REMOTE_HOST=ras5-p206.hfa.netvision.net.il
REMOTE_PORT=1376
SCRIPT_FILENAME=/webdata/citforum/htdocs/internet/html/ssi.shtml
SERVER_ADDR=195.230.75.98 SERVER_ADMIN=info@citforum.ru SERVER_NAME=citforum.ru
SERVER_PORT=80 SERVER_SIGNATURE= SERVER_SOFTWARE=Apache/1.3.12 (Unix)
UNIQUE_ID=OVZteMPmS2IAAPxiCc4 GATEWAY_INTERFACE=CGI/1.1 SERVER_PROTOCOL=HTTP/1.1
REQUEST_METHOD=GET QUERY_STRING= REQUEST_URI=/internet/html/ssi.shtml
SCRIPT_NAME=/internet/html/ssi.shtml DATE_LOCAL=26.06.2000 00:37:12
DATE_GMT=25.06.2000 20:37:12 LAST_MODIFIED=21.06.2000 16:31:33
DOCUMENT_URI=/internet/html/ssi.shtml DOCUMENT_PATH_INFO= USER_NAME=andreya
DOCUMENT_NAME=ssi.shtml
- set var
-
Устанавливает значение переменной окружения. Формат такой set
var="ИМЯ_ПЕРЕМЕННОЙ" value="ЗНАЧЕНИЕ".
Значение переменной SERVER_NAME: <!--#echo
var="SERVER_NAME" --><BR> Сменим значение: <!--#set
var="SERVER_NAME" value="www.dhls.ru"
--><BR> Значение переменной SERVER_NAME: <!--#echo
var="SERVER_NAME" --><BR>
Вывод:
Значение переменной SERVER_NAME:citforum.ru Сменим
значение: Значение переменной SERVER_NAME: www.dhls.ru
- if/else
-
Наличие такой команды не может не радовать...:) Применяется
для управления выводом страницы по условию. Синтаксис такой:
<!--#if expr="УСЛОВИЕ1" --> HTML-код, который будет
выводиться, если УСЛОВИЕ1 истинно <--#elif expr="УСЛОВИЕ2"
--> HTML-код, который будет выводиться, если УСЛОВИЕ1 ложно, а УСЛОВИЕ2
истинно <--#else --> HTML-код, который будет выводиться, если все
условия ложны <--#endif -->
Условие - это либо строка, которая является истинной, если
непустая, или набор операторов сравнения строк. Операторы могут быть
=,!=,<,<=,> и >. Если
вторая строка заключена в "/"(слэши), то условие истинно, если
в первой строке встречается хоть одно вхождение второй строки. Можно объединять
несколько операторов сравнения с помощью операторов &&(И) и
||(ИЛИ). Для группирования условий используются
"()"(скобки).
Броузер:<b> <!--#if expr="$HTTP_USER_AGENT=/Nav/ ||
$HTTP_USER_AGENT=/Mozilla/" --> Netscape Navigator <!--#elif
expr="$HTTP_USER_AGENT=/MSIE/" --> Internet
Explorer <!--#else --> Неизвестный (<!--#echo
var="HTTP_USER_AGENT" -->) <!--#endif --> </b>
Вывод:
Броузер: Netscape Navigator
Литература по SSI
|