|
ДИРЕКТИВЫДирективы по алфавиту вместе с атрибутами. Одни и те же атрибуты могут использоваться с разными директивами. Поиск по атрибутам на странице «Атрибуты». ПРИМЕЧАНИЕ Здесь не затронуты директивы, относящиеся к спецификации SSI+. #breakОстанавливает вывод документа. Атрибутов нет ПРИМЕР
ПРИМЕЧАНИЕ Работает не на всех серверах. #configУправляет следующимими опциями SSI: установка текста сообщения об ошибке, настройка формата вывода размера файла и даты/времени. Сама директива ничего не выводит, лишь даёт указания, которые используют другие директивы. Атрибуты: errmsg, sizefmt, timefmt, cmdecho, cmdprefix, cmdpostfix errmsg устанавливает любой текст сообщения об ошибке вместо стандартного [an error occurred while processing this directive]. ПРИМЕЧАНИЕ Инструкция #config errmsg должна быть помещена на основной странице документа. Находясь во вложенной странице, она не срабатывает. Так что задать её один раз на весь сайт не получится. ПРИМЕР (из Чехова) <!--#config errmsg = "[Подъезжая к своей станцыи, у меня слетела шляпа]" --> Результат (задана заведомо не существующая директива) [Подъезжая к своей станцыи, у меня слетела шляпа]
sizefmt определяет формат вывода размера файла: <!--#config sizefmt = "bytes" --> в байтах; <!--#config sizefmt = "abbrev" --> в килобайтах.
ПРИМЕЧАНИЕ Русскому человеку может показаться, что bytes тоже задаёт размер в килобайтах, только с меньшим округлением. Я тоже на это попался (минут 20 гуглил справочники, пока не дошло до идиота). Вспомним, что «у них там» десятичным разделителем служит точка, а запятая (которая выводится при использовании bytes) поразрядно разделяет тысячи. timefmt определяет формат вывода даты и времени. Для этого существует ряд шаблонов (красным помечены шаблоны, зависимые от настроек сервера или ОС, в [квадратных скобках] неописанные шаблоны, найденные мною эмпирически). ПРИМЕЧАНИЕ Большинство серверов работают под UNIX. Но встречаются и под Windows. Мой сайт находится на нормальном UNIX’овом сервере, а для предварительных прогонов и тестов я пользуюсь виртуальным сервером, установленным на моём компьютере под Windows.
Можно комбинировать шаблоны друг с другом и с любыми прочими символами. ПРИМЕР
Формат вывода: Последнее обновление страницы: 17.11.2017, 06:20 cmdecho определяет выходные параметры команды, выполненной директивой #exec cmd. ОПИСЫВАЮ ЧИСТО ТЕОРЕТИЧЕСКИ. НА ПРАКТИКЕ ПОКА ЧТО [...СЛЕТЕЛА ШЛЯПА] Формат: <!--#config cmdecho = "onoroff" --> onoroff ON или OFF. Если команда директивы #exec cmd возвращает данные, которые можно вывести через #echo, они выводятся при значении ON и игнорируются при значении OFF. По умолчанию OFF. Формат выводимых данных зависит от наличия или отсутствия директив #config cmdprefix и #config cmdpostfix. При отсутствии этих директив данные выводятся без форматирования и интерпретации специальных символов. При их наличии вывод будет отформатирован и интерпретирован в соответствии с их значениями. cmdprefix используется для установки текста, начинающего каждую строку, выводимую каждой следующей инструкцией #exec cmd. ОПИСЫВАЮ ЧИСТО ТЕОРЕТИЧЕСКИ. НА ПРАКТИКЕ ПОКА ЧТО [...СЛЕТЕЛА ШЛЯПА] Формат: <!--#config cmdprefix = "строка" --> строка любой символ и/или тэг HTML. cmdpostfix используется для установки текста, завершающего каждую строку, выводимую каждой следующей инструкцией #exec cmd. ОПИСЫВАЮ ЧИСТО ТЕОРЕТИЧЕСКИ. НА ПРАКТИКЕ ПОКА ЧТО [...СЛЕТЕЛА ШЛЯПА] Формат: <!--#config cmdpostfix = "строка" --> строка любой символ и/или тэг HTML. #echoВыводит значеня переменных или даты, отформатированной в инструкции #config timefmt. Атрибуты: encoding, var encoding необязательный атрибут, определяет интерпретацию текста браузером. Имеет 3 значения: entity (по умолчанию), url и none.
ПРИМЕЧАНИЕ Атрибут encoding всегда ставится перед атрибутом var. ПРИМЕР <!--#set var = "string1" value = "Тестируем <b>тэги</b> <i>HTML</i>" --> <p>По умолчанию:<br><!--#echo var = "string1" --></p> <p>Значение none:<br><!--#echo encoding = "none" var = "string1" --></p> <p>Значение url:<br><!--#echo encoding = "url" var = "string1" --></p> Результат По умолчанию: Значение none: Значение url: var определяет имя переменной, значение которой надо вывести. ПРИМЕРЫ Вывод текущего времени в формате «чч:мм:сс»
Результат Текущее время: 17:19:37 Вывод значения переменной окружения HTTP_USER_AGENT
Результат CCBot/2.0 (https://commoncrawl.org/faq/) #execЗапускает внешние программы и скрипты CGI. Атрибуты: cmd, cgi cmd задаёт параметры для выполнения программ, выполняемых UNIX shell. ОПИСЫВАЮ ЧИСТО ТЕОРЕТИЧЕСКИ. НА ПРАКТИКЕ ПОКА ЧТО [...СЛЕТЕЛА ШЛЯПА] Формат:
имя_программы полное имя исполняемой программы или команды; список_аргументов список аргументов, посылаемых исполняемой программе. ПРИМЕЧАНИЕ На сервере должны быть заданы пути к исполняемой программе в переменной окружения PATH. При отсутвии пути программу можно запустить, используя shell или скрипт CGI. Стандартный вывод программы направляется в документ HTML. Вывод может быть модифицирован директивой #config cmdecho. ПРИМЕЧАНИЕ Под Win32 и под UNIX с использованием suExec в директиве #exec cmd нельзя передавать аргументы команды или иным образом включать пробелы в значении cmd. Следующий пример будет работать только под UNIX конфигурации non-suExec, но не сработает ни под Win32, ни при выполнении suExec: <!--#exec cmd="perl /cgi-bin/counter/counter.pl page4" --> Вместо этого следует применить другую директиву: <!--#include virtual="/cgi-bin/counter/counter.pl?page4" --> В любом случае: если можно обойтись директивой #include, то лучше применять её вместо #exec. cgi вызывает скрипт CGI. Вызываемый скрипт должен находится в директории cgi-bin или иметь расширение .cgi. Формат:
имя_скрипта полное имя скрипта CGI. Вывод скрипта подставляется в документ. #flastmodОтображает дату последнго обновления указанного файла (формат даты можно установить директивой config). Атрибуты: file, virtual file указывает путь к файлу относительно текущего документа. Можно использовать как текстовые файлы, так и HTML-документа, а также включать другие SSI-файлы (обычно с расширением shtml) но только те, которые находятся в той же папке, что и данная страница. virtual задает виртуальный путь к документу на сервере. Начинается со слэша. /file.html находится в корневой папке. /subdir/file.html находится в папке subdir, вложенной в корневую. ПРИМЕР
Результат Последнее обновление страницы: 17.11.2017, 06:20 #fsizeОтображает размер определённого файла (формат вывода размера файла можно определить директивой #config). Атрибуты: file, virtual file указывает путь к файлу относительно текущего документа. virtual задает виртуальный путь к документу на сервере. (Подробнее об этих атрибутах см. #flastmod). ПРИМЕРЫ Определяем размер данного файла в байтах (через атрибут file). ПРИМЕЧАНИЕ Не путайте «импортные» точки и запятые.
Результат 45,076 Определяем размер главной страницы «Мастерской Самоделкина» в байтах (через атрибут file).
Результат 5,134 Определяем размер главной страницы сайта в килобайтах (через атрибут virtual).
Результат 8.4K Определяем размер главной страницы «Мастерской Самоделкина» в килобайтах (через атрибут virtual).
Результат 5.0K #gotoОператор перехода на метку. Атрибутов нет, вместо атрибута используется значение метка имя метки, определяемое директивой #label. ПРИМЕР
ПРИМЕЧАНИЕ Работает не на всех серверах. #includeДиректива include одна из наиболее используемых. У некоторых этой директивой ограничивается всё представление об SSI. Вставляет содержимое другого файла в текущий документ. К файлу обязательно должен быть открыт доступ, иначе он не будет показан. Можно включать файлы с расширением .txt, .htm, .html, .shtml. Для основного файла «приёмника» включений предусмотрено специальное расширение .shtml, но это не обязательно и зависит от настроек сервера, которыми можно управлять в файле .htaccess (см. «Настройка сервера»). Атрибуты: file, virtual file указывает путь к файлу относительно текущего документа. virtual задает виртуальный путь к документу на сервере. (Подробнее об этих атрибутах см. #fsize). ПРИМЕР
Результат можно увидеть в «шапке» этой страницы и других, ей подобных. #labelУстанавливает метку в документе, которая используется директивой #goto. Атрибутов нет, вместо атрибута используется значение ПРИМЕР
ПРИМЕЧАНИЕ Работает не на всех серверах. #printenvВыводит имена и значения всех переменных окружения, определённых на данном сервере. Атрибутов нет ПРИМЕР Выводим список всех переменных окружения ПРИМЕЧАНИЕ Чтобы было «читабельнее», лучше это сделать в тэге <pre>, а чтобы при этом не порушить дизайн, назначить ему в CSS приемлемую ширину и задать прокрутку. Поскольку список очень длинный, имеет смысл ограничить и высоту контейнера (с соответствующей прокруткой).
Результат HTTP_HOST=froland.ru HTTP_X_FORWARDED_FOR=3.239.159.107, 3.239.159.107 HTTP_X_FORWARDED_PROTO=http HTTP_X_REQUEST_SCHEME=http HTTP_CONNECTION=close HTTP_USER_AGENT=CCBot/2.0 (https://commoncrawl.org/faq/) HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 HTTP_ACCEPT_LANGUAGE=en-US,en;q=0.5 HTTP_IF_MODIFIED_SINCE=Mon, 18 Jan 2021 09:52:05 GMT HTTP_ACCEPT_ENCODING=br,gzip PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin SERVER_SIGNATURE=<address>Apache/2.4.41 (Ubuntu) PHP/5.3.29 mod_fcgid/2.3.9 mod_perl/2.0.9 Perl/v5.22.1 Server at froland.ru Port 80</address> SERVER_SOFTWARE=Apache/2.4.41 (Ubuntu) PHP/5.3.29 mod_fcgid/2.3.9 mod_perl/2.0.9 Perl/v5.22.1 SERVER_NAME=froland.ru SERVER_ADDR=10.3.117.188 SERVER_PORT=80 REMOTE_ADDR=3.239.159.107 DOCUMENT_ROOT=/home/frolan01/froland.ru/docs REQUEST_SCHEME=http CONTEXT_PREFIX= CONTEXT_DOCUMENT_ROOT=/home/frolan01/froland.ru/docs SERVER_ADMIN=postmaster@froland.ru SCRIPT_FILENAME=/home/frolan01/froland.ru/docs/samodel/ssi2_1.html REMOTE_PORT=37490 GATEWAY_INTERFACE=CGI/1.1 SERVER_PROTOCOL=HTTP/1.0 REQUEST_METHOD=GET QUERY_STRING= REQUEST_URI=/samodel/ssi2_1.html SCRIPT_NAME=/samodel/ssi2_1.html DATE_LOCAL=07.03.2021, 17:19 DATE_GMT=07.03.2021, 14:19 LAST_MODIFIED=17.11.2017, 06:20 DOCUMENT_URI=/samodel/ssi2_1.html DOCUMENT_ARGS= USER_NAME=frolan01 DOCUMENT_NAME=ssi2_1.html TIME_FMT=% string1=Тестируем <b>тэги</b> <i>HTML</i> Кроме вывода этого огромного списка, директива #printenv ничего делать не умеет. Чтобы вывести значения отдельных переменных окружения, нужно использовать #echo var. Выведем разные варианты адреса этой страницы
Результат /home/frolan01/froland.ru/docs/samodel/ssi2_1.html (none) (none) Если заданная переменная не определена на данном сервере, выводится (none). #setУстанавливает значение переменной Атрибуты: var, value (используются вместе) var определяет имя переменной; value определяет значение переменной. ПРИМЕР
Результат Тестируем директиву #set froland2@yandex.ru Последнее обновление страницы: 17.11.2017, 06:20 [Подъезжая к своей станцыи, у меня слетела шляпа]
|