Статистика
Онлайн всего: 2 Гостей: 2 Пользователей: 0
|
Статьи
Основы SSI
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 - 213.59.136.10 Твой броузер - Mozilla/4.0 (compatible; MSIE 5.0;
Windows 98; DigExt) Мой сервер - www.citforum.ru Ты пришел со страницы -
http://vakh.online.com.ua/promo/library/index.html |
|
- include file
include file Включает в 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=*/* HTTP_ACCEPT_LANGUAGE=ru HTTP_CONNECTION=keep-alive HTTP_HOST=www.citforum.ru HTTP_REFERER=http://vakh.online.com.ua/promo/library/index.html HTTP_USER_AGENT=Mozilla/4.0
(compatible; MSIE 5.0; Windows 98; DigExt) HTTP_VIA=1.1
ce HTTP_X_FORWARDED_FOR=213.59.141.209 PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin REMOTE_ADDR=213.59.136.10 REMOTE_HOST=nat-cisco-gw.net.kht.ru REMOTE_PORT=41305 SCRIPT_FILENAME=/webdata/citforum/htdocs/internet/html/ssi.shtml SERVER_ADDR=195.230.75.98 SERVER_ADMIN=info@citforum.ru SERVER_NAME=www.citforum.ru SERVER_PORT=80 SERVER_SIGNATURE= SERVER_SOFTWARE=Apache/1.3.12
(Unix) mod_ssl/2.6.2
OpenSSL/0.9.4 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=11.07.2001
10:44:14 DATE_GMT=11.07.2001 06:44:14 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:www.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> |
Источник: http://www.internet-technologies.ru/articles/article_51.html |
Категория: SSI | Добавил: mas (16-Сентября-2006)
|
Просмотров: 859
| Рейтинг: 0.0/0 |
|