Початок роботи
Ця сторінка описує типові випадки використання для створення правил у програмі 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
- Ціль:
- Група:
Це лише приклад. Ви також можете створити кілька правил для вирішення кожної проблеми. Це може бути набагато простіше.