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

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

Эта страница описывает распространенные варианты использования для создания правил в приложении 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

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

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