Preskoči na vsebino

Uvod

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

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

Primer 1: Odprtje drugega spletnega mesta

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

1. korak: 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 Džoker:

https://twitter.com/*

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

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

Če želite to storiti, preklopite iz džokerja na Regularni izraz in nastavite to kot vzorec:

https://(twitter|x).com/.*
  • (twitter|x): Cilja tako na twitter kot na x. (| se imenuje cev.)
  • .*: Je isto kot džokerjev *. Natančneje, . pomeni kateri koli znak, * pa karkoli pred tem simbolom, ponovljeno poljubno število krat, kar pomeni, da se ujema s čimer koli.

Regularni izraz je malo zapleten, a ko se ga navadite, bo močno orodje. Priporočamo uporabo RegExr kot igrišča za analizo delovanja vašega vzorca 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, s twitter1com/ ali x_com/.

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

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

2. korak: 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: Odstranitev parametrov 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 najlažji način možnost Obdelava skupin zajemanja:

  • Preusmeri iz: https://example.com/* (Džoker)
  • Preusmeri na: $0
  • Obdelava skupin zajemanja:
    • Skupina: $0
    • Postopek: Zamenjaj pojavitve
      • Cilj: &?source=[^&]*
      • Zamenjava: (brez)
      • Besedilni vzorec: 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č postopkov.

Primer 3: Dodajanje parametrov poizvedbe v URL

Recimo, da obstaja spletno mesto example.com, ki privzeto prikazuje mobilno postavitev, vi pa raje uporabljate namizno postavitev. Na srečo spletno mesto podpira parameter poizvedbe layout za določanje, katero postavitev naj spletno mesto prikaže. Ustvarimo pravilo, ki samodejno doda layout=desktop.

Morda mislite, da bi to 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 džokerja, saj se interno pretvori v regularni izraz.

Vendar pa obstaja nekaj težav s temi nastavitvami.

Težava 1: Neskončna zanka preusmerjanja

Trenutna nastavitev ustvari neskončno zanko preusmerjanja, 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, in sicer s regularnim izrazom:

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

Težava 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 samo z &. ? kot poseben znak je dovoljen samo 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 si korak za korakom.

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

RegExr vam lahko pomaga razumeti podrobnosti.

opomba

RegExr prikaže napako, če ne pobegnete / z \. Čeprav ga lahko pobegnete, ni obvezno, saj Redirect Web uporablja drugačen mehanizem 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 velik problem, če pa ga želite odstraniti, lahko uporabite Obdelavo skupin zajemanja.

Skratka, to je končni rezultat:

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

⬇️ Prenesite pravilo

To je le primer. Ustvarite lahko tudi več pravil za reševanje posameznih težav. Lahko je veliko enostavneje.