Начало работы
На этой странице описываются распространенные сценарии использования для создания правил в приложении 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
- Target (Цель):
- Group (Группа):
Это правило работает следующим образом:
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
- Target (Цель):
- Group (Группа):
Это всего лишь пример. Вы также можете создать несколько правил для решения каждой проблемы. Это может быть намного проще.