Preskoči na vsebino

Začetek

Ta stran opisuje pogoste primere uporabe za ustvarjanje pravil v aplikaciji Redirect Web.

(Podrobnosti o nastavitvah pravil lahko izveste tudi na strani Nastavitve pravil.)

Primer 1: Odprite drugo spletno stran

Recimo, da ste zasvojeni s Twitterjem in se odločite meditirati v Insight Timerju, kadar koli pomotoma odprete Twitter. Ustvarimo pravilo za to!

Korak 1. Nastavite "Preusmeri iz"

Najprej morate nastaviti razdelek Preusmeri iz na zaslonu Uredi pravilo v aplikaciji. Cilji so URL-ji, ki se začnejo z https://twitter.com/.

V tem primeru lahko določite naslednji vzorec z načinom Wildcard:

https://twitter.com/*

V načinu Wildcard * pomeni, da se ujema s čimer koli (= nič ali več znakov).

Vendar počakajte. twitter.com je bil preimenovan v x.com. Preprosto lahko zamenjate twitter.com z x.com, vendar nihče ne ve, kdaj si bo novi lastnik spet premislil in ga vrnil nazaj. Zato ciljajmo na twitter.com in x.com.

Če želite to storiti, preklopite iz Wildcard na Regular Expression in nastavite to kot vzorec:

https://(twitter|x).com/.*
  • (twitter|x): cilja na twitter in x. (| se imenuje cev.)
  • .*: Je enako kot Wildcardov *. Natančneje, . pomeni kateri koli znak in * pomeni karkoli pred tem simbolom, ponovljeno poljubno število krat, kar pomeni, da se ujema s čimer koli.

Regularni izrazi so nekoliko zapleteni, a ko se jih navadite, bodo močno orodje. Priporočamo uporabo RegExr kot igrišča za analizo, kako deluje vaš vzorec regularnega izraza.

opomba

V regularnih izrazih se . v (twitter|x).com obravnava tudi kot kateri koli znak. Zato se (twitter|x).com/.* ujema tudi, na primer, z twitter1com/ ali x_com/.

Da bi se temu izognili, ga lahko spremenite v (twitter|x)\.com/.*. \ se uporablja za pobeg posebnega znaka.

Vendar takšnih URL-jev v splošnem internetnem okolju ni. Zato lahko . pustite kot poseben znak, če vam je ljubše. Vaše pravilo je za vašo lastno uporabo, zato ga implementirajte, kot se vam zdi primerno.

Korak 2: Nastavite "Preusmeri na"

Preprosto določite URL, kot sledi:

https://insighttimer.com/saraauster/guided-meditations/calm

Zdaj vas Redirect Web pripelje do meditacije, ko dostopate do Twitterja!

⬇️ Prenesite pravilo

Primer 2: Odstranite parametre poizvedbe iz URL-ja

Recimo, da je v URL-ju example.com parameter poizvedbe source=twitter in ste se odločili, da ga odstranite, da se anonimizirate.

V tem primeru je možnost Obdelava zajemalnih skupin najlažji način.:

  • Preusmeri iz: https://example.com/* (Wildcard)
  • Preusmeri na: $0
  • Obdelava zajemalnih skupin:
    • Skupina: $0
    • Postopek: Zamenjaj pojavitve
      • Cilj: &?source=[^&]*
      • Zamenjava: (brez)
      • Vzorec besedila: Regularni izraz

⬇️ Prenesite pravilo

To pravilo deluje takole:

https://example.com/?source=twitter
↪ https://example.com/?

https://example.com/?hello=world&source=twitter&foo=bar
↪ https://example.com/?hello=world&foo=bar

Če želite odstraniti več parametrov, dodajte več procesov.

Primer 3: Dodajte parametre poizvedbe v URL

Recimo, da obstaja spletna stran example.com, ki privzeto prikazuje mobilno postavitev, vendar vam je ljubša namizna postavitev. Na srečo spletna stran podpira parameter poizvedbe layout za določitev, katero postavitev spletna stran prikazuje. Ustvarimo pravilo, ki samodejno doda layout=desktop.

Morda mislite, da bi ga lahko definirali takole:

  • Preusmeri iz: https://example.com/.* (Regularni izraz)
  • Preusmeri na: $0?layout=desktop

$0 se nanaša na ciljni URL. Če poskusite dostopati do example.com/hello, ste preusmerjeni na example.com/hello?layout=desktop. Ta funkcija se imenuje substitucija.

namig

Substitucija je na voljo tudi za način Wildcard, saj se interno pretvori v regularni izraz.

Vendar pa obstaja nekaj težav s temi nastavitvami.

Problem 1: Neskončna zanka

Trenutna nastavitev ustvarja neskončno zanko preusmeritev, saj https://example.com/.* cilja tudi na https://example.com/hello?layout=desktop.

V tem primeru lahko določite izključen vzorec URL-ja, ki vam omogoča dostop brez preusmeritve, kot je ta z regularnim izrazom:

.*[&?]layout=[^&]*.*
  • .*: Ujema se s čimer koli
  • [&?]: Ujema se z & ali ?
  • [^&]*: Ujema se s čimer koli razen z &

Problem 2: Ne more pravilno obravnavati obstoječih parametrov

Če ima ciljni URL že druge parametre poizvedbe, kot je example.com/hello?theme=dark, bo destinacija example.com/hello?theme=dark?layout=desktop (v URL-ju sta dva ?), vendar lahko parametre združite le z &. ? kot poseben znak je dovoljen le na začetku parametrov. Zato se ne obravnava kot veljaven parameter.

V tem primeru spremenite nastavitve takole:

  • Preusmeri iz: (https://example.com/[^?]*)(\(.*))?
  • Preusmeri na: $1?layout=desktop&$3

Poglejmo korak za korakom.

  • (https://example.com/[^?]*): Ujema se z delom do prejšnjega znaka ?.
    • [^?]* se ujema s čimer koli razen z ?.
    • To je ovito z (), tako da se lahko nanj sklicujete z $1 kasneje.
  • (\(.*))?: Ujema se z nizom, ki se začne z ?, kar pomeni parametre poizvedbe.
    • To se ujema tudi s praznim nizom z ? kvantifikatorjem na koncu vzorca, ki se ujema nič ali enkrat.
    • Zunanji () in notranji () se lahko sklicujeta z $2 in $3 kasneje.

RegExr vam lahko pomaga razumeti podrobnosti.

opomba

RegExr prikaže napako, ko ne pobegnete / z \. Čeprav ga lahko pobegnete, to ni obvezno, saj Redirect Web uporablja drug motor podjetja Apple, ki ne zahteva pobega.

To ni popolna rešitev, saj preusmeri example.com/hello na example.com/hello?layout=desktop&, kar vključuje nepotreben & na koncu URL-ja. Na splošno to ni velika težava, vendar če ga želite odstraniti, lahko uporabite Obdelavo zajemalnih skupin.

Skratka, to je končni izhod:

  • Preusmeri iz: (https://example.com/[^?]*)((\(.*))?) (Regularni izraz)
  • Preusmeri na: $1?layout=desktop$3
  • Izključen vzorec URL-ja: .*[&?]layout=[^&]*.* (Regularni izraz)
  • Obdelava zajemalnih skupin:
    • Skupina: $3
    • Postopek: Zamenjaj pojavitve
      • Cilj: \?(.*)
      • Zamenjava: &$1

⬇️ Prenesite pravilo

To je zgolj primer. Prav tako lahko ustvarite več pravil za obravnavanje vsakega problema. Lahko je veliko enostavneje.