Перейти к основному содержимому

Начало работы

На этой странице описываются распространенные сценарии использования для создания правил в приложении Redirect Web.

(Подробнее о настройках правил вы также можете узнать на странице Настройки правил.)

Пример 1: Открытие другого веб-сайта

Предположим, вы зависите от Twitter и решили медитировать в Insight Timer каждый раз, когда случайно открываете Twitter. Давайте создадим правило для этого!

Шаг 1. Настройка "Перенаправить с"

Во-первых, вам следует настроить раздел Redirect From (Перенаправить с) на экране Edit Rule (Редактировать правило) в приложении. Целевые URL-адреса начинаются с https://twitter.com/.

В этом случае вы можете указать следующий шаблон в режиме Wildcard (Маска):

https://twitter.com/*

В режиме Wildcard символ * означает, что он соответствует любой последовательности символов (= ноль или более символов).

Однако, подождите. twitter.com был переименован в x.com. Вы можете просто заменить twitter.com на x.com, но никто не знает, когда новый владелец снова передумает и вернет все назад. Поэтому давайте нацелимся как на twitter.com, так и на x.com.

Для этого переключитесь с Wildcard на Regular Expression (Регулярное выражение) и установите следующий шаблон:

https://(twitter|x).com/.*
  • (twitter|x): нацеливается как на twitter, так и на x. (| называется пайпом.)
  • .*: То же самое, что и * в Wildcard. Более конкретно, . означает любой символ, а * означает любое количество повторений символа, стоящего перед ним, в результате чего это соответствует всему.

Регулярные выражения немного сложны, но как только вы к ним привыкнете, они станут мощным инструментом. Мы рекомендуем использовать RegExr в качестве песочницы для анализа того, как работает ваш шаблон регулярного выражения.

примечание

В регулярных выражениях . в (twitter|x).com также трактуется как любой символ. Поэтому (twitter|x).com/.* также будет соответствовать, например, twitter1com/ или x_com/.

Чтобы этого избежать, вы можете изменить его на (twitter|x)\.com/.*. \ используется для экранирования специального символа.

Однако таких URL-адресов в обычной интернет-среде не существует. Поэтому вы можете оставить . как специальный символ, если вам так удобнее. Ваше правило предназначено для вашего собственного использования, поэтому реализуйте его так, как считаете нужным.

Шаг 2: Настройка "Перенаправить на"

Просто укажите URL-адрес следующим образом:

https://insighttimer.com/saraauster/guided-meditations/calm

Теперь Redirect Web перенаправит вас на медитацию, когда вы зайдете в Twitter!

⬇️ Загрузить правило

Пример 2: Удаление параметров запроса из URL

Предположим, в URL-адресе example.com есть параметр запроса source=twitter, и вы решили удалить его, чтобы сохранить анонимность.

В этом случае опция Capturing Group Processing (Обработка групп захвата) — самый простой способ:

  • Redirect From (Перенаправить с): https://example.com/* (Wildcard)
  • Redirect To (Перенаправить на): $0
  • Capturing Group Processing (Обработка групп захвата):
    • Group (Группа): $0
    • Process (Процесс): Replace Occurrences (Заменить вхождения)
      • Target (Цель): &?source=[^&]*
      • Replacement (Замена): (нет)
      • Text Pattern (Шаблон текста): Regular Expression

⬇️ Загрузить правило

Это правило работает следующим образом:

https://example.com/?source=twitter
↪ https://example.com/?

https://example.com/?hello=world&source=twitter&foo=bar
↪ https://example.com/?hello=world&foo=bar

Если вы хотите удалить больше параметров, добавьте дополнительные процессы.

Пример 3: Добавление параметров запроса в URL

Допустим, есть веб-сайт example.com, который по умолчанию отображает мобильную версию, но вы предпочитаете его десктопную версию. К счастью, сайт поддерживает параметр запроса layout для указания того, какой макет он отображает. Давайте создадим правило, которое автоматически добавляет layout=desktop.

Возможно, вы думаете, что могли бы определить его следующим образом:

  • Redirect From (Перенаправить с): https://example.com/.* (Regular Expression)
  • Redirect To (Перенаправить на): $0?layout=desktop

$0 ссылается на целевой URL. Если вы попытаетесь получить доступ к example.com/hello, вы будете перенаправлены на example.com/hello?layout=desktop. Эта функция называется подстановкой.

подсказка

Подстановка также доступна для режима Wildcard, поскольку он внутренне преобразуется в регулярное выражение.

Однако у этих настроек есть несколько проблем.

Проблема 1: Бесконечный цикл

Текущая настройка создает бесконечный цикл перенаправления, поскольку https://example.com/.* также нацеливается на https://example.com/hello?layout=desktop.

В этом случае вы можете указать исключенный шаблон URL, который позволит вам получить доступ без перенаправления, например, так с использованием регулярных выражений:

.*[&?]layout=[^&]*.*
  • .*: Соответствует всему
  • [&?]: Соответствует либо &, либо ?
  • [^&]*: Соответствует всему, кроме &

Проблема 2: Невозможно правильно обработать существующие параметры

Если целевой URL уже имеет другие параметры запроса, такие как example.com/hello?theme=dark, то пунктом назначения будет example.com/hello?theme=dark?layout=desktop (в URL два символа ?), но вы можете объединять параметры только с помощью &. ? как специальный символ разрешен только в начале параметров. Поэтому он не рассматривается как действительный параметр.

В этом случае измените настройки следующим образом:

  • Redirect From (Перенаправить с): (https://example.com/[^?]*)(\?(.*))?
  • Redirect To (Перенаправить на): $1?layout=desktop&$3

Рассмотрим это шаг за шагом.

  • (https://example.com/[^?]*): Соответствует части до предыдущего символа ?.
    • [^?]* соответствует всему, кроме ?.
    • Это заключено в (), чтобы вы могли сослаться на это с помощью $1 позже.
  • (\?(.*))?: Соответствует строке, начинающейся с ?, что означает параметры запроса.
    • Это также соответствует пустой строке благодаря квантификатору ? в конце шаблона, который соответствует нулю или одному разу.
    • Внешние () и внутренние () могут быть указаны с помощью $2 и $3 позже.

RegExr может помочь вам понять детали.

примечание

RegExr показывает ошибку, если вы не экранируете / с помощью \. Хотя вы можете экранировать его, это не требуется, поскольку Redirect Web использует другой движок от Apple, который не требует экранирования.

Это не идеальное решение, поскольку оно перенаправляет example.com/hello на example.com/hello?layout=desktop&, что включает ненужный & в конце URL. В общем, это не большая проблема, но если вы хотите удалить его, вы можете использовать Capturing Group Processing (Обработка групп захвата).

В итоге, это окончательный вывод:

  • Redirect From (Перенаправить с): (https://example.com/[^?]*)((\?(.*))?) (Regular Expression)
  • Redirect To (Перенаправить на): $1?layout=desktop$3
  • Excluded URL Pattern (Исключаемый шаблон URL): .*[&?]layout=[^&]*.* (Regular Expression)
  • Capturing Group Processing (Обработка групп захвата):
    • Group (Группа): $3
    • Process (Процесс): Replace Occurrences (Заменить вхождения)
      • Target (Цель): \?(.*)
      • Replacement (Замена): &$1

⬇️ Загрузить правило

Это всего лишь пример. Вы также можете создать несколько правил для решения каждой проблемы. Это может быть намного проще.