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 natwitter
inx
. (|
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.
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!
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
- 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č 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.
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.
- To se ujema tudi s praznim nizom z
RegExr vam lahko pomaga razumeti podrobnosti.
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
- Cilj:
- Skupina:
To je zgolj primer. Prav tako lahko ustvarite več pravil za obravnavanje vsakega problema. Lahko je veliko enostavneje.