Початок роботи
Ця сторінка описує типові випадки використання для створення правил у веб-застосунку Redirect Web.
(Ви також можете дізнатися деталі налаштувань правил на сторінці Налаштування правил.)
Випадок 1: Відкрити інший веб-сайт
Припустімо, ви залежні від Twitter і вирішили медитувати в Insight Timer щоразу, коли випадково відкриваєте Twitter. Створімо правило для цього!
Крок 1. Налаштуйте "Redirect From" (Перенаправити з)
Спочатку вам слід налаштувати розділ 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: Налаштуйте "Redirect To" (Перенаправити на)
Просто вкажіть 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, оскільки він внутрішньо конвертується в Regular Expression.
Однак, з цими налаштуваннями є кілька проблем.
Проблема 1: Нескінченний цикл
Поточне налаштування створює нескінченний цикл перенаправлень, оскільки https://example.com/.*
також націлює https://example.com/hello?layout=desktop
.
У цьому випадку ви можете вказати виключений шаблон URL-адреси, який дозволить вам отримати доступ без перенаправлення, як це зроблено за допомогою Regular Expression:
.*[&?]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:
.*[&?]layout=[^&]*.*
(Regular Expression) - Capturing Group Processing:
- Group:
$3
- Process: Replace Occurrences
- Target:
\?(.*)
- Replacement:
&$1
- Target:
- Group:
Це лише приклад. Ви також можете створити кілька правил для вирішення кожної проблеми. Це може бути набагато простіше.