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 natwitter
kot nax
. (|
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.
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!
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
- Cilj:
- Skupina:
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.
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
.
- To se ujema tudi s praznim nizom zaradi kvantifikatorja
RegExr vam lahko pomaga razumeti podrobnosti.
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
- Cilj:
- Skupina:
To je le primer. Ustvarite lahko tudi več pravil za reševanje posameznih težav. Lahko je veliko enostavneje.