Začínáme
Tato stránka popisuje běžné případy použití pro vytváření pravidel v aplikaci Redirect Web.
(Podrobnosti o nastavení pravidel se dozvíte také na stránce Nastavení pravidel.)
Případ 1: Otevření jiné webové stránky
Předpokládejme, že jste závislí na Twitteru a rozhodnete se meditovat v Insight Timeru, kdykoli náhodou otevřete Twitter. Vytvořme pro to pravidlo!
Krok 1. Nastavení "Přesměrovat z"
Nejprve byste měli nastavit sekci Přesměrovat z na obrazovce Upravit pravidlo v aplikaci. Cíle jsou URL začínající https://twitter.com/
.
V tomto případě můžete zadat následující vzor v režimu Zástupný znak:
https://twitter.com/*
V režimu Zástupný znak znamená *
, že se shoduje s čímkoli (= nula nebo více znaků).
Nicméně, počkejte. twitter.com
bylo přejmenováno na x.com
. Můžete jednoduše nahradit twitter.com
za x.com
, ale nikdo neví, kdy si nový vlastník opět rozmyslí a vrátí to zpět. Proto se zaměřme na twitter.com
i x.com
.
Chcete-li to provést, přepněte ze Zástupného znaku na Regulární výraz a nastavte tento vzor:
https://(twitter|x).com/.*
(twitter|x)
: cílí natwitter
ix
. (|
se nazývá svislá čára.).*
: Je to stejné jako*
u zástupného znaku. Konkrétněji,.
znamená jakýkoli znak a*
znamená cokoli před tímto symbolem opakované libovolný početkrát, což vede k tomu, že se shoduje s čímkoli.
Regulární výraz je trochu složitý, ale jakmile si na něj zvyknete, bude to mocný nástroj. Doporučujeme použít RegExr jako hřiště pro analýzu toho, jak funguje váš vzor regulárního výrazu.
V regulárních výrazech je .
v (twitter|x).com
také považován za jakýkoli znak. Proto (twitter|x).com/.*
také odpovídá například twitter1com/
nebo x_com/
.
Abyste tomu zabránili, můžete to změnit na (twitter|x)\.com/.*
. \
se používá k úniku speciálního znaku.
Nicméně, v obecném internetovém prostředí takové URL neexistují. Proto můžete .
ponechat jako speciální znak, pokud si to přejete. Vaše pravidlo je pro vaše vlastní použití, takže ho implementujte, jak uznáte za vhodné.
Krok 2: Nastavení "Přesměrovat na"
Jednoduše zadejte URL takto:
https://insighttimer.com/saraauster/guided-meditations/calm
Nyní vás Redirect Web přesměruje na meditaci, když přistoupíte na Twitter!
Případ 2: Odebrání parametrů dotazu z URL
Předpokládejme, že v URL example.com
je parametr dotazu source=twitter
a vy jste se rozhodli jej odebrat, abyste se anonymizovali.
V tomto případě je nejjednodušší volbou Zpracování zachycující skupiny:
- Přesměrovat z:
https://example.com/*
(Zástupný znak) - Přesměrovat na:
$0
- Zpracování zachycující skupiny:
- Skupina:
$0
- Proces: Nahradit výskyty
- Cíl:
&?source=[^&]*
- Náhrada: (žádná)
- Textový vzor: Regulární výraz
- Cíl:
- Skupina:
Toto pravidlo funguje takto:
https://example.com/?source=twitter
↪ https://example.com/?
https://example.com/?hello=world&source=twitter&foo=bar
↪ https://example.com/?hello=world&foo=bar
Pokud chcete odebrat více parametrů, přidejte další procesy.
Případ 3: Přidání parametrů dotazu do URL
Řekněme, že existuje webová stránka example.com
, která ve výchozím nastavení zobrazuje mobilní rozložení, ale vy preferujete její desktopové rozložení. Naštěstí webová stránka podporuje parametr dotazu layout
pro určení, jaké rozložení webová stránka zobrazuje. Vytvořme pravidlo, které automaticky přidá layout=desktop
.
Možná si myslíte, že byste to mohli definovat takto:
- Přesměrovat z:
https://example.com/.*
(Regulární výraz) - Přesměrovat na:
$0?layout=desktop
$0
odkazuje na cílovou URL. Pokud se pokusíte přistoupit na example.com/hello
, budete přesměrováni na example.com/hello?layout=desktop
. Tato funkce se nazývá substituce.
Substituce je k dispozici také pro režim Zástupný znak, protože je interně převedena na regulární výraz.
Nicméně, s těmito nastaveními je několik problémů.
Problém 1: Nekonečná smyčka
Současné nastavení vytváří nekonečnou smyčku přesměrování, protože https://example.com/.*
také cílí na https://example.com/hello?layout=desktop
.
V tomto případě můžete zadat vyloučený vzor URL, který vám umožní přístup bez přesměrování, například takto s regulárním výrazem:
.*[&?]layout=[^&]*.*
.*
: Shoduje se s čímkoli[&?]
: Shoduje se buď s&
nebo?
[^&]*
: Shoduje se s čímkoli kromě&
Problém 2: Nelze správně zpracovat existující parametry
Pokud cílová URL již obsahuje další parametry dotazu, jako například example.com/hello?theme=dark
, cílová adresa bude example.com/hello?theme=dark?layout=desktop
(v URL jsou dva ?
), ale parametry můžete spojit pouze pomocí &
. ?
jako speciální znak je povolen pouze na začátku parametrů. Takže se nepovažuje za platný parametr.
V tomto případě změňte nastavení takto:
- Přesměrovat z:
(https://example.com/[^?]*)(\(?(.*))?
- Přesměrovat na:
$1?layout=desktop&$3
Pojďme se na to podívat krok za krokem.
(https://example.com/[^?]*)
: Shoduje se s částí až do předchozího znaku?
.[^?]*
se shoduje s čímkoli kromě?
.- Toto je zabaleno do
()
takže na to můžete později odkazovat pomocí$1
.
(\(?(.*))?)
: Shoduje se s řetězcem začínajícím?
, což znamená parametry dotazu.- Toto se také shoduje s prázdným řetězcem pomocí kvantifikátoru
?
na konci vzoru, který shoduje nula nebo jedenkrát. - Vnější
()
a vnitřní()
lze později odkazovat pomocí$2
a$3
.
- Toto se také shoduje s prázdným řetězcem pomocí kvantifikátoru
RegExr vám může pomoci pochopit podrobnosti.
RegExr zobrazuje chybu, když neuniknete /
pomocí \
. I když to můžete uniknout, není to vyžadováno, protože Redirect Web používá jiný engine od Apple, který nevyžaduje únik.
Toto není dokonalé řešení, protože přesměruje example.com/hello
na example.com/hello?layout=desktop&
, což obsahuje zbytečné &
na konci URL. Obecně to není velký problém, ale pokud si přejete jej odstranit, můžete použít Zpracování zachycující skupiny.
Závěrem, toto je konečný výstup:
- Přesměrovat z:
(https://example.com/[^?]*)((\(?(.*))?)
(Regulární výraz) - Přesměrovat na:
$1?layout=desktop$3
- Vyloučený vzor URL:
.*[&?]layout=[^&]*.*
(Regulární výraz) - Zpracování zachycující skupiny:
- Skupina:
$3
- Proces: Nahradit výskyty
- Cíl:
\?(.*)
- Náhrada:
&$1
- Cíl:
- Skupina:
Toto je pouze příklad. Můžete také vytvořit více pravidel pro řešení každého problému. Může to být mnohem jednodušší.