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 - (none)
Твой броузер - CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
Мой сервер - dh.opennet.ru
Ты пришел со страницы - (none)
Список переменных окружения: <BR>
<!--#include virtual="/cgi-bin/env.pl"--> <BR>
Мой PGP ключ: <BR>
<!--#include file="dh.asc"--> <BR>
Список переменных окружения:
CHARSET = koi8-r
CHARSET_DETERMINED_BY = Default
CHARSET_HTTP_METHOD = http://
CHARSET_SERVER_NAME = dh.opennet.ru:80
CHARSET_SERVER_PORT = 80
DATE_GMT = Thursday, 17-May-2012 00:34:04 GMT
DATE_LOCAL = Thursday, 17-May-2012 06:34:04 YEKT
DOCUMENT_NAME = ssi.html
DOCUMENT_PATH_INFO =
DOCUMENT_ROOT = /home/dh/htdocs
DOCUMENT_URI = /ssi.html
GATEWAY_INTERFACE = CGI/1.1
HTTP_ACCEPT = text/html,application/xhtml+xml,text/xml;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
HTTP_ACCEPT_CHARSET = ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING = gzip
HTTP_ACCEPT_LANGUAGE = en-us,en;q=0.5
HTTP_CACHE_CONTROL = no-cache
HTTP_CONNECTION = close
HTTP_HOST = dh.opennet.ru
HTTP_PRAGMA = no-cache
HTTP_USER_AGENT = CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
HTTP_X_CC_ID = ccc04-02
LAST_MODIFIED = Wednesday, 02-May-2001 22:20:39 YEKST
PATH = /usr/local/bin:/usr/bin:/bin
QUERY_STRING =
REMOTE_ADDR = 38.107.179.242
REMOTE_PORT = 53973
REQUEST_METHOD = GET
REQUEST_URI = /ssi.html
SCRIPT_FILENAME = /home/dh/cgi-bin/env.pl
SCRIPT_NAME = /cgi-bin/env.pl
SERVER_ADDR = 217.195.210.162
SERVER_ADMIN = mc@tyumen.ru
SERVER_NAME = dh.opennet.ru
SERVER_PORT = 80
SERVER_PROTOCOL = INCLUDED
SERVER_SOFTWARE = Apache
USER_NAME = dh
Мой PGP ключ:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 5.0i for non-commercial use
mQBtAzhowUIAAAEDAM+2uk0Jd15B49ZUd6oN6qsMWI/lLixReCHqRFh/1rCzGChj
AS82oFsXzW55bUCHvK2g9BWyPIdP2vr6HirF1RL/7eyZ0kCPgp/btBGMMdFlLEN8
lnZeDa/DyHe9VH8GYwAFEbQPREggPGRoQG51bGwucnU+iQB1AwUQOGjBQsPId71U
fwZjAQGfBwMAqOlRs0SbsM/WHunVOGWxRPaIbpU5BmAttA6j/iVzvcO1cn9O2mYw
YLuIC5KtucsYIRXPfopifY5RLmSQgnJhBQL2G7IcKGmYh9dTk5LYqJKAus+cNHRl
zGZX1Hw2DqOu
=0Kmx
-----END PGP PUBLIC KEY BLOCK-----
Размер файла этой страницы:
<!--#fsize file="ssi.html"--> <BR>
Размер файла этой страницы:
14k
Время последней модификации файла этой страницы:
<!--#flastmod file="ssi.html"--> <BR>
Время последней модификации файла этой страницы:
Wednesday, 02-May-2001 22:20:39 YEKST
Немного информации о тебе: <BR>
<!--#exec cgi="/cgi-bin/aboutyou.pl"--> <BR>
Сейчас: <!--#exec cmd="date"--> <BR>
Немного информации о тебе:
Ты пользуешься броузером Spider/Robot для операционной системы Spider/Robot.
У тебя прямой доступ в Internet. Твой IP - 38.107.179.242, а имя хоста -
Немного информации о твоем IP:
#
# Query terms are ambiguous. The query is assumed to be:
# "n 38.107.179.242"
#
# Use "?" to get help.
#
#
# The following results may also be obtained via:
# http://whois.arin.net/rest/nets;q=38.107.179.242?showDetails=true&showARIN=false&ext=netref2
#
NetRange: 38.0.0.0 - 38.255.255.255
CIDR: 38.0.0.0/8
OriginAS: AS174
NetName: COGENT-A
NetHandle: NET-38-0-0-0-1
Parent:
NetType: Direct Allocation
Comment: Reassignment information for this block can be found at
Comment: rwhois.cogentco.com 4321
RegDate: 1991-04-16
Updated: 2011-05-20
Ref: http://whois.arin.net/rest/net/NET-38-0-0-0-1
OrgName: PSINet, Inc.
OrgId: PSI
Address: 1015 31st St NW
City: Washington
StateProv: DC
PostalCode: 20007
Country: US
RegDate:
Updated: 2011-05-27
Comment: rwhois.cogentco.com
Ref: http://whois.arin.net/rest/org/PSI
ReferralServer: rwhois://rwhois.cogentco.com:4321
OrgNOCHandle: ZC108-ARIN
OrgNOCName: Cogent Communications
OrgNOCPhone: +1-877-875-4311
OrgNOCEmail: noc@cogentco.com
OrgNOCRef: http://whois.arin.net/rest/poc/ZC108-ARIN
OrgAbuseHandle: COGEN-ARIN
OrgAbuseName: Cogent Abuse
OrgAbusePhone: +1-877-875-4311
OrgAbuseEmail: abuse@cogentco.com
OrgAbuseRef: http://whois.arin.net/rest/poc/COGEN-ARIN
OrgTechHandle: IPALL-ARIN
OrgTechName: IP Allocation
OrgTechPhone: +1-877-875-4311
OrgTechEmail: ipalloc@cogentco.com
OrgTechRef: http://whois.arin.net/rest/poc/IPALL-ARIN
RTechHandle: PSI-NISC-ARIN
RTechName: IP Allocation
RTechPhone: +1-877-875-4311
RTechEmail: ipalloc@cogentco.com
Не так уж и много... :)
Сейчас:
Это стандартная ошибка при запуске скрипта, которого нет: <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.html"--> <BR>
Размер файла этой страницы в байтах:
<!--#config sizefmt="bytes"-->
<!--#fsize file="ssi.html"--> <BR>
Размер файла этой страницы в килобайтах:
14k
Размер файла этой страницы в байтах:
14,320
Время модификации файла этой страницы в секундах с 01.01.1970:
<!--#config timefmt="%s"-->
<!--#flastmod file="ssi.html"--> <BR>
Время модификации файла этой страницы в читабельном виде:
<!--#config timefmt="%d.%m.%Y %H:%M:%S"-->
<!--#flastmod file="ssi.html"--> <BR>
Время модификации файла этой страницы в секундах с 01.01.1970:
988820439
Время модификации файла этой страницы в читабельном виде:
02.05.2001 22:20:39
| %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 -->
Список переменных окружения:
CHARSET=koi8-r
CHARSET_DETERMINED_BY=Default
CHARSET_HTTP_METHOD=http://
CHARSET_SERVER_NAME=dh.opennet.ru:80
CHARSET_SERVER_PORT=80
DOCUMENT_ROOT=/home/dh/htdocs
HTTP_ACCEPT=text/html,application/xhtml+xml,text/xml;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
HTTP_ACCEPT_CHARSET=ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING=gzip
HTTP_ACCEPT_LANGUAGE=en-us,en;q=0.5
HTTP_CACHE_CONTROL=no-cache
HTTP_CONNECTION=close
HTTP_HOST=dh.opennet.ru
HTTP_PRAGMA=no-cache
HTTP_USER_AGENT=CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
HTTP_X_CC_ID=ccc04-02
PATH=/usr/bin:/bin
REMOTE_ADDR=38.107.179.242
REMOTE_PORT=53973
SCRIPT_FILENAME=/home/dh/htdocs/ssi.html
SERVER_ADDR=217.195.210.162
SERVER_ADMIN=mc@tyumen.ru
SERVER_NAME=dh.opennet.ru
SERVER_PORT=80
SERVER_SIGNATURE=<ADDRESS>Apache/1.3.33 Server at dh.opennet.ru Port 80</ADDRESS>
SERVER_SOFTWARE=Apache
SOURCE_CHARSET=koi8-r
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.1
REQUEST_METHOD=GET
QUERY_STRING=
REQUEST_URI=/ssi.html
SCRIPT_NAME=/ssi.html
DATE_LOCAL=17.05.2012 06:34:04
DATE_GMT=17.05.2012 00:34:04
LAST_MODIFIED=02.05.2001 22:20:39
DOCUMENT_URI=/ssi.html
DOCUMENT_PATH_INFO=
USER_NAME=dh
DOCUMENT_NAME=ssi.html
Значение переменной 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:dh.opennet.ru
Сменим значение:
Значение переменной SERVER_NAME: www.dhls.ru
<!--#if expr="УСЛОВИЕ1" -->
HTML-код, который будет выводиться, если УСЛОВИЕ1 истинно
<--#elif expr="УСЛОВИЕ2" -->
HTML-код, который будет выводиться, если УСЛОВИЕ1 ложно, а УСЛОВИЕ2 истинно
<--#else -->
HTML-код, который будет выводиться, если все условия ложны
<--#endif -->
Броузер:<b>
<!--#if expr="$HTTP_USER_AGENT=/Nav/" -->
Netscape Navigator
<!--#elif expr="$HTTP_USER_AGENT=/MSIE/" -->
Internet Explorer
<!--#else -->
Неизвестный (<!--#echo var="HTTP_USER_AGENT" -->)
<!--#endif -->
</b>
Броузер:
Неизвестный (CCBot/1.0 (+http://www.commoncrawl.org/bot.html))
(c)Ерижоков А.А., 2000.
Использование данного документа разрешено только с согласия автора и с указанием первоисточника:
DH's Linux Site