Jump to content

Серверная часть включает в себя

Server SideIncludes ( SSI ) — это простой интерпретируемый серверный язык сценариев, используемый почти исключительно для Всемирной паутины . Это наиболее полезно для включения содержимого одного или нескольких файлов на веб-страницу на веб-сервере (см. ниже), используя его #include директива. Обычно это может быть общий фрагмент кода на сайте, например заголовок страницы, нижний колонтитул страницы и меню навигации. SSI также содержит директивы управления условными функциями и директивы вызова внешних программ. Он поддерживается Apache , LiteSpeed , nginx , IIS , а также W3C . Jigsaw от [1] Его корни лежат в NCSA HTTPd . [2]

Чтобы веб-сервер распознал HTML- файл с поддержкой SSI и, следовательно, выполнил эти инструкции, имя файла должно заканчиваться специальным расширением . по умолчанию .shtml, .stm, .shtmили, если сервер настроен на это, установите бит выполнения файла. [3]

Как простой язык программирования, SSI поддерживает только один тип : текст. Его поток управления довольно прост, выбор поддерживается, но циклы не поддерживаются изначально и могут быть выполнены только путем рекурсии с использованием include или с использованием HTTP-перенаправления . [а] Простой дизайн языка облегчает его изучение и использование по сравнению с большинством языков сценариев на стороне сервера, в то время как сложная обработка на стороне сервера часто выполняется с помощью одного из наиболее многофункциональных языков программирования . SSI является полным по Тьюрингу . [4]

SSI имеет простой синтаксис: <!--#directive parameter=value parameter=value -->. Директивы помещаются в комментарии HTML, поэтому, если SSI не включен, пользователи не увидят директивы SSI на странице, пока не посмотрят на ее источник. Обратите внимание, что синтаксис не допускает пробелов между начальным знаком «<!--» и директивой. Учебное пособие Apache по SSI предусматривает, что формат требует символа пробела перед знаком «-->», закрывающим элемент. [5]

Веб-страница, содержащая ежедневную котировку, может включать ее, поместив в файл веб-страницы следующий код:

<!--#include virtual="../quote.txt" -->

С одним изменением quote.txt файл, на всех страницах, содержащих этот файл, будут отображаться последние ежедневные котировки. Включение не ограничивается файлами и может также представлять собой текстовый вывод программы или значение системной переменной, например текущего времени.

Директивы

[ редактировать ]

Ниже приведены директивы SSI времен NCSA HTTPd (1990-е годы). [2] Некоторые реализации поддерживают не все из них. [6]

Директивы NCSA HTTPd SSI
Директива Параметры Описание Пример
include файловый или виртуальный Вероятно, это наиболее часто используемая директива SSI. содержимое одного документа Это позволяет включать в другой. Включенный документ сам может быть другим файлом с поддержкой SSI. file или virtual параметры указывают файл ( HTML- страницу, текстовый файл, скрипт и т. д.), который необходимо включить. NCSA HTTPd не поддерживал CGI через include, [2] но позже это делает Apache HTTPd. [7] Если у процесса нет доступа для чтения файла или выполнения сценария, включение завершится неудачно. Параметр " virtual" обрабатывает любые пути к каталогам как часть URL-адреса, а " file" обрабатывает любые пути к каталогам, как в базовой файловой системе. При использовании " file"запрещено ссылаться на абсолютные пути или ../ для доступа к родительскому каталогу. Документация Apache рекомендует использовать " virtual"предпочтительно" file". [7]
<!--#include virtual="menu.cgi" -->
<!--#include file="footer.html" -->
exec cgi или cmd Эта директива выполняет программу, сценарий или команду оболочки на сервере. Параметр cmd указывает команду на стороне сервера; параметр cgi указывает путь к сценарию CGI . The PATH_INFO и QUERY_STRING текущего сценария SSI будет передан в сценарий CGI, в результате чего вместо «include virtual» следует использовать «exec cgi». [ нужна ссылка ]
<!--#exec cgi="/cgi-bin/foo.cgi" -->
<!--#exec cmd="ls -l" -->
echo наш Эта директива отображает содержимое указанной HTTP переменной среды . Переменные включают в себя HTTP_USER_AGENT, LAST_MODIFIED, и HTTP_ACCEPT. [ нужна ссылка ]
Your IP address is:
<!--#echo var="REMOTE_ADDR" -->
config timefmt, sizefmt или errmsg Эта директива настраивает форматы отображения даты, времени, размера файла и сообщения об ошибке (возвращается при сбое команды SSI).
<!--#config timefmt="%y %m %d" -->
<!--#config sizefmt="bytes" -->
<!--#config errmsg="SSI command failed!" -->
flastmod и fsize файловый или виртуальный Эти директивы отображают дату последнего изменения указанного документа или размер указанного документа. Файл или виртуальные параметры определяют используемый документ. Параметр файла определяет документ относительно пути к документу; виртуальный параметр определяет документ относительно корня документа.
<!--#flastmod virtual="index.html" -->
<!--#fsize file="script.pl" -->

Директивы управления

[ редактировать ]

Директивы управления позже добавляются в SSI. Они включают в себя повсеместное управление потоком if-elif-else-endif и запись переменных, а также более экзотические функции, такие как циклы, встречающиеся только в некоторых реализациях.

Директива Параметры Описание Пример Найдено в
  • если
  • Элиф
  • еще
  • конец
выражение Оператор if . Используется для тестов условий, которые могут определить и создать несколько логических страниц из одной физической страницы. elif это сокращение для вложенного else-if. else и endif не принимать параметры.

Синтаксис выражений различается в зависимости от реализации. Обычно поддерживаются существование переменных и проверки на равенство/регулярные выражения. Вместо этого Jigsaw использует выражения, разделенные на несколько атрибутов. [1]

<!--#if expr="${Sec_Nav}" -->
<!--#include virtual="secondary_nav.txt" -->
<!--#elif expr="${Pri_Nav}" -->
<!--#include virtual="primary_nav.txt" -->
<!--#else -->
<!--#include virtual="article.txt" -->
<!--#endif -->
Вездесущий.
набор было, значение Устанавливает значение переменной SSI. Apache предоставляет дополнительные параметры для кодировок . [8]
<!--#set var="foo" value="bar" -->
Апач, [8] Нгинкс [9]
printenv   Эта директива выводит список всех переменных SSI и их значений, включая переменные среды и определяемые пользователем переменные. У него нет атрибутов.
<!--#printenv -->
Апач [8]

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Тем не менее встречается в некоторых реализациях, включая Jigsaw.
  1. ^ Jump up to: а б «Команды SSI» . W3C . Проверено 24 марта 2019 г.
  2. ^ Jump up to: а б с «Включения на стороне сервера (SSI)» . Учебное пособие по HTTPd NCSA . Архивировано из оригинала 3 марта 1997 года . Проверено 24 марта 2019 г.
  3. ^ «Настройка вашего сервера для разрешения SSI» . Учебное пособие по Apache: введение в серверные включения . Фонд программного обеспечения Apache . Проверено 24 июня 2015 г.
  4. ^ «Серверная часть включает машину Тьюринга, Ян Шейбал» . Яншейбал.де . Проверено 6 декабря 2012 г.
  5. ^ «Основные директивы и синтаксис SSI» . 09.02.2018 . Проверено 9 февраля 2018 г.
  6. ^ «Модуль ngx_http_ssi_module» . документация nginx . Проверено 16 ноября 2021 г.
  7. ^ Jump up to: а б «Модуль Apache mod_include» . Документация HTTP-сервера Apache версии 2.4 . Фонд программного обеспечения Apache . Проверено 7 сентября 2021 г.
  8. ^ Jump up to: а б с "мод_включить" . HTTP-сервер Apache . Проверено 25 марта 2019 г.
  9. ^ "ngx_http_ssi_module" . nginx.org . Проверено 25 марта 2019 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 549342e1f0c6f74347a67f19f0eebd71__1721253420
URL1:https://arc.ask3.ru/arc/aa/54/71/549342e1f0c6f74347a67f19f0eebd71.html
Заголовок, (Title) документа по адресу, URL1:
Server Side Includes - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)