Ерижоков А.А., DH's Linux Site
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 # не обязательно, т.к. он и так описан.
Теперь надо разрешить выполнение 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 - 194.67.43.24
Твой броузер - Teleport Pro/1.29
Мой сервер - citforum.primorye.ru
Ты пришел со страницы - http://www.yandex.ru/
<!--#fsize file="ssi.shtml"--> <BR>
Размер файла этой страницы:
12k
Время последней модификации файла этой страницы:
<!--#flastmod file="ssi.shtml"--> <BR>
Время последней модификации файла этой страницы:
Wednesday, 21-Jun-2000 23:31:33 VLAST
Это стандартная ошибка при запуске скрипта, которого нет: <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>
Размер файла этой страницы в килобайтах:
12k
Размер файла этой страницы в байтах:
12,463
Время модификации файла этой страницы в секундах с 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 23:31:33
%a | Sun | |
%A | Sunday | |
%b | Аббревиатура названия месяца | Jan |
%B | Полное название месяца | |
%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 | |
%T | Время в формате "%H:%M:%S" | |
%U | Неделя года | 49 |
%w | Номер дня недели | 5 |
%y | 95 | |
%Y | Год в формате ГГГГ | 1995 |
%Z | Временная зона | MSK |
<BR>
<!--#printenv -->
Список переменных окружения:
CHARSET=windows-1251
CHARSET_DETERMINED_BY=Default
CHARSET_HTTP_METHOD=http://
CHARSET_SERVER_NAME=citforum.primorye.ru:80
CHARSET_SERVER_PORT=80
DOCUMENT_ROOT=/u1/mirror/citforum/
HTTP_ACCEPT=*/*
HTTP_HOST=citforum.primorye.ru
HTTP_IF_MODIFIED_SINCE=Wed, 18 Jul 2001 16:59:09 GMT
HTTP_REFERER=http://citforum.primorye.ru/news.shtml
HTTP_USER_AGENT=Teleport Pro/1.29
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/X11R6/bin
REMOTE_ADDR=194.67.43.24
REMOTE_PORT=4286
SCRIPT_FILENAME=/u1/mirror/citforum/internet/html/ssi.shtml
SERVER_ADDR=212.122.1.26
SERVER_ADMIN=webmaster@lucky.primorye.ru
SERVER_NAME=citforum.primorye.ru
SERVER_PORT=80
SERVER_SIGNATURE=<ADDRESS>Apache/1.3.19 Server at citforum.primorye.ru Port 80</ADDRESS>
SERVER_SOFTWARE=Apache/1.3.19 (Unix) rus/PL30.4
SOURCE_CHARSET=windows-1251
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.0
REQUEST_METHOD=GET
QUERY_STRING=
REQUEST_URI=/internet/html/ssi.shtml
SCRIPT_NAME=/internet/html/ssi.shtml
DATE_LOCAL=21.07.2001 04:23:06
DATE_GMT=20.07.2001 17:23:06
LAST_MODIFIED=21.06.2000 23:31:33
DOCUMENT_URI=/internet/html/ssi.shtml
DOCUMENT_PATH_INFO=
USER_NAME=root
DOCUMENT_NAME=ssi.shtml
Значение переменной 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.primorye.ru
Значение переменной SERVER_NAME: www.dhls.ru
<!--#if expr="УСЛОВИЕ1" -->
<--#elif expr="УСЛОВИЕ2" -->
HTML-код, который будет выводиться, если УСЛОВИЕ1 ложно, а УСЛОВИЕ2 истинно
<--#else -->
HTML-код, который будет выводиться, если все условия ложны
<--#endif -->
Броузер:<b>
<!--#if expr="$HTTP_USER_AGENT=/Nav/ || $HTTP_USER_AGENT=/Mozilla/" -->
<!--#elif expr="$HTTP_USER_AGENT=/MSIE/" -->
Internet Explorer
<!--#else -->
Неизвестный (<!--#echo var="HTTP_USER_AGENT" -->)
<!--#endif -->
</b>
Вывод:
Броузер:
Неизвестный (Teleport Pro/1.29)