Преминете към основното съдържание

Първи стъпки

Тази страница описва често срещани сценарии за създаване на правила в уеб приложението 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. (| се нарича оператор 'или' (pipe).)
  • .*: Същото е като * в 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 адрес

Да предположим, че има параметър на заявката source=twitter в URL адрес на example.com и сте решили да го премахнете, за да се анонимизирате.

В този случай опцията Обработка на група за улавяне е най-лесният начин:

  • Пренасочване от: 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

⬇️ Изтеглете правилото

Това е само пример. Можете също така да създадете няколко правила за справяне с всеки проблем. Може да бъде много по-просто.