Začíname
Táto stránka popisuje bežné prípady použitia pre vytváranie pravidiel v aplikácii Redirect Web.
(Podrobnosti o nastaveniach pravidiel sa dozviete aj na stránke Nastavenia pravidiel.)
Prípad 1: Otvorenie inej webovej stránky
Predpokladajme, že ste závislí na Twitteri a rozhodnete sa meditovať v Insight Timer vždy, keď náhodou otvoríte Twitter. Vytvorme pre to pravidlo!
Krok 1. Nastavte "Presmerovať z"
Najprv by ste mali nastaviť sekciu Presmerovať z na obrazovke Upraviť pravidlo v aplikácii. Cieľmi sú URL adresy začínajúce na https://twitter.com/
.
V tomto prípade môžete zadať nasledujúci vzor s režimom Zástupný znak:
https://twitter.com/*
V režime Zástupný znak znamená *
, že sa zhoduje s čímkoľvek (= nula alebo viac znakov).
Avšak, počkajte. twitter.com
bol premenovaný na x.com
. Môžete jednoducho nahradiť twitter.com
za x.com
ale nikto nevie, kedy si nový majiteľ opäť rozmyslí a vráti to späť. Preto sa zamerajme na twitter.com
aj x.com
.
Ak to chcete urobiť, prepnite zo Zástupného znaku na Regulárny výraz a nastavte tento vzor:
https://(twitter|x).com/.*
(twitter|x)
: zameriava sa natwitter
ajx
. (|
sa nazýva rúrka.).*
: Je to to isté ako*
v Zástupnom znaku. Konkrétnejšie,.
znamená akýkoľvek znak a*
znamená čokoľvek pred týmto symbolom opakované ľubovoľný počet krát, čo vedie k tomu, že sa zhoduje s čímkoľvek.
Regulárny výraz je trochu komplikovaný, ale akonáhle si naň zvyknete, bude to silný nástroj. Odporúčame použiť RegExr ako ihrisko na analýzu toho, ako funguje váš vzor regulárneho výrazu.
V regulárnych výrazoch sa .
v (twitter|x).com
tiež považuje za akýkoľvek znak. Preto (twitter|x).com/.*
sa zhoduje napríklad aj s twitter1com/
alebo x_com/
.
Aby ste sa tomu vyhli, môžete to zmeniť na (twitter|x)\.com/.*
. \
sa používa na únik špeciálneho znaku.
Avšak, v bežnom internetovom prostredí takéto URL adresy neexistujú. Preto môžete nechať .
ako špeciálny znak, ak to uprednostňujete. Vaše pravidlo je pre vaše vlastné použitie, takže ho implementujte tak, ako to považujete za vhodné.
Krok 2: Nastavte "Presmerovať na"
Jednoducho zadajte URL adresu nasledovne:
https://insighttimer.com/saraauster/guided-meditations/calm
Teraz vás Redirect Web presmeruje na meditáciu, keď pristupujete k Twitteru!
Prípad 2: Odstránenie parametrov dotazu z URL
Predpokladajme, že v URL adrese example.com
je parameter dotazu source=twitter
a vy ste sa rozhodli ho odstrániť, aby ste sa anonymizovali.
V tomto prípade je najjednoduchší spôsob možnosť Spracovanie zachytávacej skupiny.:
- Presmerovať z:
https://example.com/*
(Zástupný znak) - Presmerovať na:
$0
- Spracovanie zachytávacej skupiny:
- Skupina:
$0
- Proces: Nahradiť výskyty
- Cieľ:
&?source=[^&]*
- Náhrada: (žiadna)
- Textový vzor: Regulárny výraz
- Cieľ:
- Skupina:
Toto pravidlo funguje nasledovne:
https://example.com/?source=twitter
↪ https://example.com/?
https://example.com/?hello=world&source=twitter&foo=bar
↪ https://example.com/?hello=world&foo=bar
Ak chcete odstrániť viac parametrov, pridajte ďalšie procesy.
Prípad 3: Pridanie parametrov dotazu do URL
Povedzme, že existuje webová stránka s názvom example.com
, ktorá predvolene zobrazuje mobilné rozloženie, ale vy uprednostňujete jej desktopové rozloženie. Našťastie webová stránka podporuje parameter dotazu layout
na určenie, ktoré rozloženie webová stránka zobrazuje. Vytvorme pravidlo, ktoré automaticky pridá layout=desktop
.
Možno si myslíte, že by ste to mohli definovať nasledovne:
- Presmerovať z:
https://example.com/.*
(Regulárny výraz) - Presmerovať na:
$0?layout=desktop
$0
odkazuje na cieľovú URL. Ak sa pokúsite pristupovať k example.com/hello
, budete presmerovaní na example.com/hello?layout=desktop
. Táto funkcia sa nazýva substitúcia.
Substitúcia je k dispozícii aj pre režim Zástupný znak, pretože sa interne konvertuje na regulárny výraz.
Avšak, s týmito nastaveniami je niekoľko problémov.
Problém 1: Nekonečná slučka
Aktuálne nastavenie vytvára nekonečnú slučku presmerovania, pretože https://example.com/.*
sa zameriava aj na https://example.com/hello?layout=desktop
.
V tomto prípade môžete zadať vylúčený vzor URL, ktorý vám umožní prístup bez presmerovania, napríklad takto s regulárnym výrazom:
.*[&?]layout=[^&]*.*
.*
: Zhoduje sa s čímkoľvek[&?]
: Zhoduje sa buď s&
alebo?
[^&]*
: Zhoduje sa s čímkoľvek okrem&
Problém 2: Nedokáže správne spracovať existujúce parametre
Ak cieľová URL už má iné parametre dotazu ako example.com/hello?theme=dark
, cieľ bude example.com/hello?theme=dark?layout=desktop
(v URL sú dva ?
), ale parametre môžete spojiť iba s &
. ?
ako špeciálny znak je povolený iba na začiatku parametrov. Takže sa nepovažuje za platný parameter.
V tomto prípade zmeňte nastavenia takto:
- Presmerovať z:
(https://example.com/[^?]*)(\(.*))?
- Presmerovať na:
$1?layout=desktop&$3
Pozrime sa krok za krokom.
(https://example.com/[^?]*)
: Zhoduje sa s časťou až po predchádzajúci znak?
.[^?]*
sa zhoduje s čímkoľvek okrem?
.- Toto je zabalené do
()
, takže naň môžete neskôr odkazovať pomocou$1
.
(\(.*))?
: Zhoduje sa s reťazcom začínajúcim na?
, čo znamená parametre dotazu.- Toto sa zhoduje aj s prázdnym reťazcom pomocou kvantifikátora
?
na konci vzoru, ktorý sa zhoduje nula alebo jedenkrát. - Vonkajšie
()
a vnútorné()
môžu byť neskôr odkazované pomocou$2
a$3
.
- Toto sa zhoduje aj s prázdnym reťazcom pomocou kvantifikátora
RegExr vám môže pomôcť pochopiť podrobnosti.
RegExr zobrazí chybu, ak neuniknete /
pomocou \
. Hoci to môžete uniknúť, nie je to potrebné, pretože Redirect Web používa iný engine od Apple, ktorý nevyžaduje únik.
Toto nie je dokonalé riešenie, pretože presmeruje example.com/hello
na example.com/hello?layout=desktop&
, čo obsahuje zbytočný &
na konci URL. Vo všeobecnosti to nie je veľký problém, ale ak ho chcete odstrániť, môžete použiť Spracovanie zachytávacej skupiny.
Na záver, toto je konečný výstup:
- Presmerovať z:
(https://example.com/[^?]*)((\(.*))?)
(Regulárny výraz) - Presmerovať na:
$1?layout=desktop$3
- Vylúčený vzor URL:
.*[&?]layout=[^&]*.*
(Regulárny výraz) - Spracovanie zachytávacej skupiny:
- Skupina:
$3
- Proces: Nahradiť výskyty
- Cieľ:
\?(.*)
- Náhrada:
&$1
- Cieľ:
- Skupina:
Toto je len príklad. Môžete tiež vytvoriť viacero pravidiel na riešenie každého problému. Môže to byť oveľa jednoduchšie.