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-директивы:
Твой IP - <!--#echo var="REMOTE_ADDR"--> <BR>
Твой
броузер - <!--#echo var="HTTP_USER_AGENT"--> <BR>
Мой сервер -
<!--#echo var="SERVER_NAME"--> <BR>
Ты пришел со страницы -
<!--#echo var="HTTP_REFERER"--> <BR>
Твой IP - 195.248.164.231
Твой броузер - Mozilla/4.0 (compatible;
MSIE 5.0; Windows 98; DigExt)
Мой сервер - www.perl.bos.ru
Ты пришел со
страницы - (none)
Размер файла этой страницы:
<!--#fsize file="ssi.shtml"-->
<BR>
Размер файла этой страницы: 8k
Время последней модификации файла этой страницы:
<!--#flastmod
file="ssi.shtml"--> <BR>
Время последней модификации файла этой страницы: (none)
Это стандартная ошибка при запуске скрипта, которого нет: <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="abbrev"-->
<!--#fsize file="ssi.shtml"-->
<BR>
Размер файла этой страницы в байтах:
<!--#config
sizefmt="bytes"-->
<!--#fsize file="ssi.shtml"-->
<BR>
Размер файла этой страницы в килобайтах: 8k
Размер файла этой
страницы в байтах: 8,357
|
Формат |
Описание |
Пример |
|
%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 |
Список переменных окружения:<BR>
<!--#printenv
-->
Список переменных окружения:
DOCUMENT_ROOT=/cgi-bin/ HTTP_ACCEPT=*/*
HTTP_ACCEPT_ENCODING=gzip, deflate
HTTP_ACCEPT_LANGUAGE=en,x-ns1TRIgdQsxNhQ;q=0.4,x-ns2r3109OnmPe2
HTTP_CONNECTION=Keep-Alive HTTP_COOKIE=b=b HTTP_HOST=www.perl.bos.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_PORT=1365
SCRIPT_FILENAME=/cgi-bin/view.pl SERVER_ADDR=195.230.75.98
SERVER_ADMIN=nicky@nm.ru SERVER_NAME=www.perl.bos.ru SERVER_PORT=80
SERVER_SIGNATURE= SERVER_SOFTWARE=Apache/1.3.12 (Unix)
UNIQUE_ID=OiDJI8PmS2IAABXqxag GATEWAY_INTERFACE=CGI/1.1 SERVER_PROTOCOL=HTTP/1.1
REQUEST_METHOD=GET QUERY_STRING= REQUEST_URI="view=ssi"
SCRIPT_NAME=/cgi-bin/view.pl DOCUMENT_URI=/cgi-bin/view.pl?view=ssi
Значение переменной SERVER_NAME:
<!--#echo var="SERVER_NAME"
--><BR>
Сменим значение:
<!--#set var="SERVER_NAME"
value="perl.bos.ru" --><BR>
Значение переменной
SERVER_NAME:
<!--#echo var="SERVER_NAME" --><BR>
Значение переменной SERVER_NAME:www.perl.bos.ru
Сменим
значение:
Значение переменной SERVER_NAME: perl.bos.ru
<!--#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>
Вывод:
Броузер: Internet Exploer
(c)Ерижоков А.А.,
2000.
Использование данного документа разрешено только с согласия автора и с
указанием первоисточника: DH's Linux
Site