Spec-Zone.ru › Caddy

map

Устанавливает значения пользовательских плейсхолдеров, переключаемых на значение ввода.

Сравнивает исходное значение со значением ввода в соответствии с картой, и для совпадения применяет выходное значение(я) к каждому назначению. Назначения становятся именами плейсхолдеров. Также могут быть указаны значения по умолчанию для каждого назначения.

Отображаемые плейсхолдеры не оцениваются, пока они не используются, поэтому даже для очень больших сопоставлений эта директива достаточно эффективна.

Синтаксис

  • <source> — входное значение для активации. Обычно плейсхолдер.

  • <destinations...> — плейсхолдеры для создания, которые содержат выходные значения.

  • <input> — значение ввода для сопоставления. Если начинается с ~, оно обрабатывается как регулярное выражение.

  • <outputs...> — одно или несколько выходных значений для хранения в связанном плейсхолдере. Первое выходное значение записывается в первое назначение, второе выходное значение — во второе назначение и т. д.

    В качестве специального случая, парсер Caddyfile обрабатывает выходные значения, являющиеся литеральной дефисом (-), как значения null/nil. Это полезно, если вы хотите использовать значение по умолчанию для данного вывода в случае заданного входа, но хотите использовать значения, отличные от значения по умолчанию, для других выходов.

    Выходные значения будут преобразованы в соответствующие типы, если это возможно; true и false будут преобразованы в булевы типы, а числовые значения — в целые или вещественные числа соответственно. Чтобы избежать этого преобразования, можно обернуть выходные значения в кавычки, и они останутся строками.

    Количество выходов для каждого сопоставления не должно превышать количества назначений; однако для удобства может быть меньше выходов, чем назначений, и любые недостающие выходы будут неявно заполнены.

    Если в качестве входного значения использовалось регулярное выражение, то группы захвата можно ссылаться с помощью ${group}, где group — это имя или номер группы захвата в выражении. Группа захвата 0 — это полное совпадение с regexp, 1 — первая группа захвата, 2 — вторая группа захвата и т. д.

  • <default> — определяет выходные значения для хранения, если ни один вход не совпадает.

Примеры

Следующий пример демонстрирует большинство аспектов этой директивы:

Эта директива переключается на значение {host}, т. е. имя домена запроса.

  • Если запрос к example.com, установить {my_placeholder} в значение some value, и {magic_number} в значение 3.
  • В противном случае, если запрос к foo.example.com, установить {my_placeholder} в значение another value, и оставить {magic_number} со значением по умолчанию 42.
  • В противном случае, если запрос к любому поддомену example.com, установить {my_placeholder} в строку, содержащую значение первой группы захвата регулярного выражения, т. е. весь поддомен, и установить {magic_number} в 5.
  • В противном случае, если запрос к любому хосту, заканчивающемуся на .net или .xyz, установить только {magic_number} в значение 7 или 15 соответственно. Оставить {my_placeholder} без значения.
  • В противном случае (для всех остальных хостов) будут применяться значения по умолчанию: {my_placeholder} будет установлено в unknown domain, и {magic_number} будет установлено в 42.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API