Začíname
Táto stránka popisuje bežné prípady použitia na vytváranie pravidiel vo webovej aplikácii Redirect.
(Podrobnosti o nastaveniach pravidiel sa dozviete aj na stránke Nastavenia pravidiel.)
Prípad 1: Otvorenie inej webovej stránky
Predstavte si, že ste závislí od Twitteru a rozhodnete sa meditovať v aplikácii Insight Timer vždy, keď omylom otvoríte Twitter. Vytvorme na to pravidlo!
Krok 1. Nastavte "Presmerovať z"
Najprv by ste mali v aplikácii nastaviť sekciu Presmerovať z na obrazovke Upraviť pravidlo. Ciele sú URL adresy začínajúce sa na https://twitter.com/
.
V tomto prípade môžete zadať nasledujúci vzor v režime Wildcard:
https://twitter.com/*
V režime Wildcard *
znamená, že sa zhoduje s čímkoľvek (= nula alebo viac znakov).
Avšak, počkajte. twitter.com
bolo 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 z Wildcard na Regular Expression a nastavte toto ako vzor:
https://(twitter|x).com/.*
(twitter|x)
: zameriava sa natwitter
ajx
. (|
sa nazýva pipe.).*
: Je to to isté ako*
vo Wildcard. Presnejšie,.
znamená ľubovoľný znak a*
znamená čokoľvek pred týmto symbolom opakované ľubovoľný počet krát, čo vedie k zhode s čímkoľvek.
Regulárne výrazy sú trochu zložité, ale keď si na ne zvyknete, budú výkonným nástrojom. Odporúčame použiť RegExr ako cvičisko na analýzu, ako funguje váš vzor regulárneho výrazu.
V regulárnych výrazoch sa .
v (twitter|x).com
tiež považuje za ľubovoľný znak. Preto (twitter|x).com/.*
sa zhoduje aj napríklad 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.
V bežnom internetovom prostredí však takéto URL adresy neexistujú. Preto, ak uprednostňujete, môžete .
ponechať ako špeciálny znak. Vaše pravidlo je pre vaše vlastné použitie, takže ho implementujte podľa svojho uváženia.
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ď pristúpite na Twitter!
Prípad 2: Odstránenie parametrov dotazu z URL adresy
Predpokladajme, že v URL adrese example.com
existuje parameter dotazu source=twitter
a rozhodli ste sa ho odstrániť, aby ste sa anonymizovali.
V tomto prípade je najjednoduchší spôsob možnosť Spracovanie zachytávacej skupiny (Capturing Group Processing):
- Presmerovať z (Redirect From):
https://example.com/*
(Wildcard) - Presmerovať na (Redirect To):
$0
- Spracovanie zachytávacej skupiny (Capturing Group Processing):
- Skupina (Group):
$0
- Proces (Process): Nahradiť výskyty (Replace Occurrences)
- Cieľ (Target):
&?source=[^&]*
- Nahradenie (Replacement): (žiadne)
- Vzor textu (Text Pattern): Regular Expression
- Cieľ (Target):
- Skupina (Group):
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 adresy
Povedzme, že existuje webová stránka s názvom example.com
, ktorá štandardne zobrazuje mobilné rozloženie, ale vy preferujete jej rozloženie pre stolné počítače. Našťastie webová stránka podporuje parameter dotazu layout
na určenie, ktoré rozloženie sa zobrazí. Vytvorme pravidlo, ktoré automaticky pridá layout=desktop
.
Možno si myslíte, že by ste to mohli definovať nasledovne:
- Presmerovať z (Redirect From):
https://example.com/.*
(Regular Expression) - Presmerovať na (Redirect To):
$0?layout=desktop
$0
odkazuje na cieľovú URL adresu. Ak sa pokúsite získať prístup na example.com/hello
, budete presmerovaní na example.com/hello?layout=desktop
. Táto funkcia sa nazýva substitúcia.
Substitúcia je dostupná aj pre režim Wildcard, pretože je interne prevedená na Regular Expression.
Tieto nastavenia však majú 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 tiež zameriava na https://example.com/hello?layout=desktop
.
V tomto prípade môžete zadať vylúčený vzor URL adresy, ktorý vám umožní prístup bez presmerovania, napríklad takto s Regular Expression:
.*[&?]layout=[^&]*.*
.*
: Zhoduje sa s čímkoľvek[&?]
: Zhoduje sa buď s&
alebo?
[^&]*
: Zhoduje sa s čímkoľvek okrem&
Problém 2: Nesprávne spracovanie existujúcich parametrov
Ak cieľová URL adresa už má iné parametre dotazu ako example.com/hello?theme=dark
, cieľ bude example.com/hello?theme=dark?layout=desktop
(v URL adrese sú dve ?
), ale parametre môžete spojiť iba pomocou &
. ?
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 (Redirect From):
(https://example.com/[^?]*)(\?(.*))?
- Presmerovať na (Redirect To):
$1?layout=desktop&$3
Pozrime sa na to 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 to môžete neskôr odkazovať pomocou$1
.
(\?(.*))?
: Zhoduje sa s reťazcom začínajúcim sa na?
, čo znamená parametre dotazu.- Toto sa tiež zhoduje s prázdnym reťazcom pomocou kvantifikátora
?
na konci vzoru, ktorý sa zhoduje nula alebo jedenkrát. - Na vonkajšie
()
a vnútorné()
sa dá neskôr odkazovať pomocou$2
a$3
.
- Toto sa tiež zhoduje s prázdnym reťazcom pomocou kvantifikátora
RegExr vám môže pomôcť pochopiť podrobnosti.
RegExr zobrazí chybu, ak neuniknete /
pomocou \
. Aj keď ho môžete uniknúť, nie je to povinné, pretože Redirect Web používa iný engine od spoločnosti Apple, ktorý si únik nevyžaduje.
Toto nie je dokonalé riešenie, pretože presmeruje example.com/hello
na example.com/hello?layout=desktop&
, čo obsahuje nepotrebný &
na konci URL adresy. Vo všeobecnosti to nie je veľký problém, ale ak ho chcete odstrániť, môžete použiť Spracovanie zachytávacej skupiny (Capturing Group Processing).
Na záver, toto je konečný výstup:
- Presmerovať z (Redirect From):
(https://example.com/[^?]*)((\?(.*))?)
(Regular Expression) - Presmerovať na (Redirect To):
$1?layout=desktop$3
- Vylúčený vzor URL adresy (Excluded URL Pattern):
.*[&?]layout=[^&]*.*
(Regular Expression) - Spracovanie zachytávacej skupiny (Capturing Group Processing):
- Skupina (Group):
$3
- Proces (Process): Nahradiť výskyty (Replace Occurrences)
- Cieľ (Target):
\?(.*)
- Nahradenie (Replacement):
&$1
- Cieľ (Target):
- Skupina (Group):
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.