Darbo pradžia
Šiame puslapyje aprašomi dažni naudojimo atvejai kuriant taisykles „Redirect Web“ programėlėje.
(Išsamią informaciją apie taisyklių nustatymus taip pat galite sužinoti Taisyklių nustatymų puslapyje.)
1 atvejis: atidaryti kitą svetainę
Tarkime, esate priklausomas nuo „Twitter“ ir nusprendžiate medituoti „Insight Timer“ programėlėje kiekvieną kartą, kai netyčia atidarote „Twitter“. Sukurkime tam taisyklę!
1 žingsnis. Nustatykite „Nukreipti iš“ (Redirect From)
Pirmiausia, programėlėje, ekrane „Redaguoti taisyklę“ (Edit Rule), turėtumėte nustatyti Nukreipti iš (Redirect From) skyrių. Tikslai yra URL, prasidedantys https://twitter.com/
.
Šiuo atveju galite nurodyti šį šabloną, naudodami Pakaitos simbolio (Wildcard) režimą:
https://twitter.com/*
Pakaitos simbolio režime *
reiškia, kad jis atitinka bet ką (= nulį ar daugiau simbolių).
Tačiau palaukite. twitter.com
buvo pervadintas į x.com
. Galite tiesiog pakeisti twitter.com
į x.com
, bet niekas nežino, kada naujasis savininkas vėl persigalvos ir grąžins seną pavadinimą. Todėl taikykime abu: twitter.com
ir x.com
.
Norėdami tai padaryti, perjunkite iš Pakaitos simbolio režimo į Reguliariąją išraišką ir nustatykite tokį šabloną:
https://(twitter|x).com/.*
(twitter|x)
: jis taiko tiektwitter
, tiekx
. (|
vadinamas vertikaliuoju brūkšniu.).*
: Tai tas pats, kas Pakaitos simbolio*
. Tiksliau,.
reiškia bet kurį simbolį, o*
reiškia bet ką prieš šį simbolį, pakartotą bet kiek kartų, dėl ko jis atitinka bet ką.
Reguliarioji išraiška yra šiek tiek sudėtinga, bet kai prie jos priprasite, ji taps galingu įrankiu. Rekomenduojame naudoti RegExr kaip „žaidimų aikštelę“ analizuoti, kaip veikia jūsų Reguliariosios išraiškos šablonas.
Reguliariosiose išraiškose .
(twitter|x).com
taip pat traktuojamas kaip bet kuris simbolis. Todėl (twitter|x).com/.*
taip pat atitinka, pavyzdžiui, twitter1com/
arba x_com/
.
Kad to išvengtumėte, galite pakeisti jį į (twitter|x)\.com/.*
. \
naudojamas specialiajam simboliui išvengti.
Tačiau bendroje interneto aplinkoje tokių URL nėra. Todėl, jei pageidaujate, galite palikti .
kaip specialų simbolį. Jūsų taisyklė skirta jūsų pačių naudojimui, todėl įdiekite ją taip, kaip jums atrodo tinkama.
2 žingsnis: Nustatykite „Nukreipti į“ (Redirect To)
Tiesiog nurodykite URL taip:
https://insighttimer.com/saraauster/guided-meditations/calm
Dabar, kai pasiekiate „Twitter“, „Redirect Web“ nukreipia jus į meditaciją!
2 atvejis: pašalinti užklausos parametrus iš URL
Tarkime, kad example.com
URL yra užklausos parametras source=twitter
ir jūs nusprendėte jį pašalinti, kad taptumėte anonimiškas.
Šiuo atveju lengviausias būdas yra Grupės fiksavimo apdorojimo (Capturing Group Processing) parinktis:
- Nukreipti iš:
https://example.com/*
(Pakaitos simbolis) - Nukreipti į:
$0
- Grupės fiksavimo apdorojimas:
- Grupė:
$0
- Procesas: Pakeisti atsiradimus
- Tikslas:
&?source=[^&]*
- Pakeitimas: (niekas)
- Teksto šablonas: Reguliarioji išraiška
- Tikslas:
- Grupė:
Ši taisyklė veikia taip:
https://example.com/?source=twitter
↪ https://example.com/?
https://example.com/?hello=world&source=twitter&foo=bar
↪ https://example.com/?hello=world&foo=bar
Jei norite pašalinti daugiau parametrų, pridėkite daugiau procesų.
3 atvejis: pridėti užklausos parametrus prie URL
Tarkime, kad yra svetainė example.com
, kuri pagal nutylėjimą rodo mobilųjį išdėstymą, bet jūs pageidaujate jos darbalaukio išdėstymo. Laimei, svetainė palaiko layout
užklausos parametrą, kad nurodytų, kokį išdėstymą svetainė rodo. Sukurkime taisyklę, kuri automatiškai pridėtų layout=desktop
.
Galbūt manote, kad galėtumėte apibrėžti taip:
- Nukreipti iš:
https://example.com/.*
(Reguliarioji išraiška) - Nukreipti į:
$0?layout=desktop
$0
nurodo tikslinį URL. Jei bandysite pasiekti example.com/hello
, būsite nukreipti į example.com/hello?layout=desktop
. Ši funkcija vadinama pakeitimu.
Pakeitimas taip pat galimas Pakaitos simbolio (Wildcard) režimu, nes jis viduje konvertuojamas į Reguliariąją išraišką.
Tačiau yra keletas problemų su šiais nustatymais.
1 problema: begalinis ciklas
Dabartinis nustatymas sukuria begalinį nukreipimo ciklą, nes https://example.com/.*
taip pat taikomas https://example.com/hello?layout=desktop
.
Šiuo atveju galite nurodyti išskirtą URL šabloną, kuris leidžia pasiekti be nukreipimo, pavyzdžiui, taip, naudojant Reguliariąją išraišką:
.*[&?]layout=[^&]*.*
.*
: Atitinka bet ką[&?]
: Atitinka&
arba?
[^&]*
: Atitinka bet ką, išskyrus&
2 problema: negali tinkamai tvarkyti esamų parametrų
Jei tikslinis URL jau turi kitų užklausos parametrų, pvz., example.com/hello?theme=dark
, paskirties vieta bus example.com/hello?theme=dark?layout=desktop
(URL yra du ?
), bet parametrus galima sujungti tik su &
. ?
kaip specialus simbolis leidžiamas tik parametrų pradžioje. Taigi jis nėra traktuojamas kaip galiojantis parametras.
Šiuo atveju pakeiskite nustatymus taip:
- Nukreipti iš:
(https://example.com/[^?]*)(\?(.*))?
- Nukreipti į:
$1?layout=desktop&$3
Pažvelkime žingsnis po žingsnio.
(https://example.com/[^?]*)
: Atitinka dalį iki ankstesnio?
simbolio.[^?]*
atitinka bet ką, išskyrus?
.- Tai apgaubta
()
simboliais, kad vėliau galėtumėte nurodyti su$1
.
(\?(.*))?
: Atitinka eilutę, prasidedančią?
, o tai reiškia užklausos parametrus.- Tai taip pat atitinka tuščią eilutę dėl
?
kiekybinio nustatymo šablono pabaigoje, kuris atitinka nulį arba vieną kartą. - Išorinė
()
ir vidinė()
vėliau gali būti nurodomos su$2
ir$3
.
- Tai taip pat atitinka tuščią eilutę dėl
RegExr gali padėti suprasti detales.
RegExr rodo klaidą, kai nepašalinate /
su \
. Nors galite jį pašalinti, tai nėra būtina, nes „Redirect Web“ naudoja kitokią „Apple“ variklį, kuriam nereikia pašalinimo.
Tai nėra tobulas sprendimas, nes jis nukreipia example.com/hello
į example.com/hello?layout=desktop&
, kuriame yra nereikalingas &
URL pabaigoje. Apskritai tai nėra didelė problema, bet jei norite jį pašalinti, galite naudoti Grupės fiksavimo apdorojimą.
Apibendrinant, tai yra galutinis rezultatas:
- Nukreipti iš:
(https://example.com/[^?]*)((\?(.*))?)
(Reguliarioji išraiška) - Nukreipti į:
$1?layout=desktop$3
- Išskirtas URL šablonas:
.*[&?]layout=[^&]*.*
(Reguliarioji išraiška) - Grupės fiksavimo apdorojimas:
- Grupė:
$3
- Procesas: Pakeisti atsiradimus
- Tikslas:
\?(.*)
- Pakeitimas:
&$1
- Tikslas:
- Grupė:
Tai tik pavyzdys. Taip pat galite sukurti kelias taisykles kiekvienai problemai spręsti. Tai gali būti daug paprasčiau.