Přeskočit na hlavní obsah

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í na twitter i x. (| 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.

note

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!

⬇️ Stáhnout pravidlo

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

⬇️ Stáhnout pravidlo

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.

tip

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.

RegExr vám může pomoci pochopit podrobnosti.

note

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

⬇️ Stáhnout pravidlo

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šší.