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ředstavte si, že jste závislí na Twitteru a rozhodli jste se meditovat v Insight Timeru pokaždé, když ho náhodou otevřete. Vytvořme pro to pravidlo!
Krok 1. Nastavení "Přesměrovat z" (Redirect From)
Nejprve byste měli nastavit sekci Přesměrovat z (Redirect From) na obrazovce Upravit pravidlo (Edit Rule) v aplikaci. Cíle jsou URL adresy začínající na https://twitter.com/
.
V tomto případě můžete zadat následující vzor v režimu Wildcard:
https://twitter.com/*
V režimu Wildcard znamená *
, že odpovídá čemukoli (= nula nebo více znaků).
Ale pozor. 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ý majitel znovu rozmyslí a vrátí to zpět. Proto se zaměřme na obě domény, twitter.com
i x.com
.
Chcete-li to provést, přepněte z Wildcard 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 Wildcard. Přesněji,.
znamená jakýkoli znak a*
znamená cokoli před tímto symbolem opakované libovolný početkrát, což ve výsledku znamená, že se shoduje s čímkoli.
Regulární výraz je trochu složitý, ale jakmile si na něj zvyknete, stane se výkonným nástrojem. Doporučujeme použít RegExr jako pískoviště pro analýzu, jak váš vzor regulárního výrazu funguje.
V regulárních výrazech je .
v (twitter|x).com
také považován za jakýkoli znak. Proto se (twitter|x).com/.*
shoduje například i s twitter1com/
nebo x_com/
.
Abyste tomu předešli, můžete to změnit na (twitter|x)\.com/.*
. \
se používá k úniku speciálního znaku.
V běžném internetovém prostředí se však takové URL adresy nevyskytují. Proto můžete .
nechat jako speciální znak, pokud si to přejete. Vaše pravidlo je pro vaše vlastní použití, takže jej implementujte, jak uznáte za vhodné.
Krok 2: Nastavení "Přesměrovat na" (Redirect To)
Jednoduše zadejte URL adresu následovně:
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: Odstranění parametrů dotazu z URL
Představte si, že v URL adrese example.com
existuje parametr dotazu source=twitter
a vy jste se rozhodli ho odstranit, abyste se anonymizovali.
V tomto případě je nejjednodušší možností Zpracování zachycených skupin (Capturing Group Processing):
- Přesměrovat z:
https://example.com/*
(Wildcard) - Přesměrovat na:
$0
- Zpracování zachycených skupin:
- Skupina:
$0
- Proces: Nahradit výskyty
- Cíl:
&?source=[^&]*
- Náhrada: (žádná)
- Textový vzor: Regulární výraz
- Cíl:
- Skupina:
Toto pravidlo funguje následovně:
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 odstranit více parametrů, přidejte další procesy.
Případ 3: Přidání parametrů dotazu do URL
Řekněme, že existuje webová stránka s názvem example.com
, která standardně zobrazuje mobilní rozvržení, ale vy preferujete její desktopové rozvržení. Naštěstí tato stránka podporuje parametr dotazu layout
pro určení, jaké rozvržení má zobrazit. Vytvořme pravidlo, které automaticky přidá layout=desktop
.
Možná si myslíte, že byste to mohli definovat následovně:
- 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 i pro režim Wildcard, jelikož je interně převedena na Regulární výraz.
S těmito nastaveními však existuje několik problémů.
Problém 1: Nekonečná smyčka
Aktuální nastavení vytváří nekonečnou přesměrovací smyčku, jelikož https://example.com/.*
cílí také na https://example.com/hello?layout=desktop
.
V tomto případě můžete specifikovat 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=[^&]*.*
.*
: Odpovídá čemukoli[&?]
: Odpovídá buď&
, nebo?
[^&]*
: Odpovídá čemukoli kromě&
Problém 2: Nelze správně zpracovat existující parametry
Pokud cílová URL již obsahuje jiné parametry dotazu, například example.com/hello?theme=dark
, cílová adresa bude example.com/hello?theme=dark?layout=desktop
(v URL jsou dvě ?
), ale parametry lze spojit pouze pomocí &
. Znak ?
jako speciální znak je povolen pouze na začátku parametrů. Proto se to 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/[^?]*)
: Odpovídá části až po předchozí znak?
.[^?]*
odpovídá čemukoli kromě?
.- Toto je obaleno
()
, takže na to můžete později odkazovat pomocí$1
.
(\?(.*))?
: Odpovídá řetězci začínajícímu?
, což znamená parametry dotazu.- To také odpovídá prázdnému řetězci díky kvantifikátoru
?
na konci vzoru, který odpovídá nula nebo jedenkrát. - Vnější
()
a vnitřní()
lze později odkazovat pomocí$2
a$3
.
- To také odpovídá prázdnému řetězci díky kvantifikátoru
RegExr vám může pomoci pochopit podrobnosti.
RegExr zobrazí chybu, pokud neescapujete /
pomocí \
. Ačkoli to můžete escapovat, není to vyžadováno, protože Redirect Web používá jiný engine od společnosti Apple, který escapování nevyžaduje.
Toto není dokonalé řešení, protože přesměruje example.com/hello
na example.com/hello?layout=desktop&
, což na konci URL obsahuje zbytečné &
. Obecně to není velký problém, ale pokud si přejete ho odstranit, můžete použít Zpracování zachycených skupin (Capturing Group Processing).
Závěrem, toto je konečný výsledek:
- 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í zachycených skupin:
- 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šší.