Начало работы
Эта страница описывает распространенные варианты использования для создания правил в приложении Redirect Web.
(Вы также можете узнать подробности настроек правил на странице Настройки правил.)
Случай 1: Открытие другого веб-сайта
Предположим, вы зависимы от Twitter, и вы решили медитировать в Insight Timer всякий раз, когда случайно открываете Twitter. Давайте создадим правило для этого!
Шаг 1. Настройка «Перенаправить из»
Сначала вы должны настроить раздел Перенаправить из на экране Редактировать правило в приложении. Целями являются URL-адреса, начинающиеся с https://twitter.com/
.
В этом случае вы можете указать следующий шаблон в режиме Wildcard:
https://twitter.com/*
В режиме Wildcard *
означает, что он соответствует всему (= ноль или более символов).
Однако, подождите. twitter.com
был переименован в x.com
. Вы можете просто заменить twitter.com
на x.com
, но никто не знает, когда новый владелец снова передумает и вернет его обратно. Поэтому давайте нацелимся как на twitter.com
, так и на x.com
.
Для этого переключитесь с Wildcard на Регулярное выражение и установите это в качестве шаблона:
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
, и вы решили удалить его, чтобы анонимизировать себя.
В этом случае Обработка захватываемой группы — самый простой способ:
- Перенаправить из:
https://example.com/*
(Wildcard) - Перенаправить на:
$0
- Обработка захватываемой группы:
- Группа:
$0
- Процесс: Заменить вхождения
- Цель:
&?source=[^&]*
- Замена: (нет)
- Текстовый шаблон: Регулярное выражение
- Цель:
- Группа:
Это правило работает следующим образом:
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
.
Возможно, вы думаете, что можете определить это следующим образом:
- Перенаправить из:
https://example.com/.*
(Регулярное выражение) - Перенаправить на:
$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 есть два ?
), но вы можете объединять параметры только с помощью &
. ?
как специальный символ разрешен только в начале параметров. Поэтому он не рассматривается как допустимый параметр.
В этом случае измените настройки следующим образом:
- Перенаправить из:
(https://example.com/[^?]*)(\(.*\))?
- Перенаправить на:
$1?layout=desktop&$3
Давайте рассмотрим шаг за шагом.
(https://example.com/[^?]*)
: Соответствует части до предыдущего символа?
.[^?]*
соответствует всему, кроме?
.- Это обернуто в
()
, чтобы вы могли ссылаться на него с помощью$1
позже.
(\(.*\))?
: Соответствует строке, начинающейся с?
, что означает параметры запроса.- Это также соответствует пустой строке с помощью квантификатора
?
в конце шаблона, который соответствует нулю или одному разу. - Внешние
()
и внутренние()
могут быть ссылками с помощью$2
и$3
позже.
- Это также соответствует пустой строке с помощью квантификатора
RegExr может помочь вам понять детали.
RegExr показывает ошибку, когда вы не экранируете /
с помощью \
. Хотя вы можете экранировать его, это не требуется, так как Redirect Web использует другой движок от Apple, который не требует экранирования.
Это не идеальное решение, так как оно перенаправляет example.com/hello
на example.com/hello?layout=desktop&
, что включает ненужный &
в конце URL. В целом это не большая проблема, но если вы хотите удалить его, вы можете использовать Обработку захватываемой группы.
В заключение, это окончательный результат:
- Перенаправить из:
(https://example.com/[^?]*)((\(.*\))?)
(Регулярное выражение) - Перенаправить на:
$1?layout=desktop$3
- Исключенный шаблон URL:
.*[&?]layout=[^&]*.*
(Регулярное выражение) - Обработка захватываемой группы:
- Группа:
$3
- Процесс: Заменить вхождения
- Цель:
\?(.*)
- Замена:
&$1
- Цель:
- Группа:
Это всего лишь пример. Вы также можете создать несколько правил для решения каждой проблемы. Это может быть намного проще.