Pradžia
Šiame puslapyje aprašomi dažni naudojimo atvejai, skirti taisyklių kūrimui „Redirect Web“ programoje.
(Išsamią informaciją apie taisyklių nustatymus taip pat galite sužinoti puslapyje Taisyklių nustatymai.)
1 atvejis: Atidarykite kitą svetainę
Tarkime, esate priklausomas nuo „Twitter“ ir nusprendžiate medituoti „Insight Timer“ kaskart, kai netyčia atidarote „Twitter“. Sukurkime tam taisyklę!
1 žingsnis. Nustatykite „Nukreipti iš“
Pirmiausia, programoje, ekrane Redaguoti taisyklę, turėtumėte nustatyti skyrių Nukreipti iš. Tikslai yra URL, prasidedantys https://twitter.com/
.
Šiuo atveju galite nurodyti šį šabloną su Pakaitos simbolio režimu:
https://twitter.com/*
Pakaitos simbolio režimu *
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 atgal. Todėl nukreipkime ir į twitter.com
, ir į x.com
.
Norėdami tai padaryti, perjunkite iš Pakaitos simbolio į Reguliariąją išraišką ir nustatykite šį šabloną:
https://(twitter|x).com/.*
(twitter|x)
: jis nukreipia ir įtwitter
, ir įx
. (|
vadinamas vertikaliu brūkšniu.).*
: Tai tas pats, kas Pakaitos simbolio*
. Tiksliau,.
reiškia bet kokį simbolį, o*
reiškia bet ką prieš šį simbolį, pakartotą bet kiek kartų, todėl 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ę, kad išanalizuotumėte, kaip veikia jūsų reguliariosios išraiškos šablonas.
Reguliariosiose išraiškose .
(twitter|x).com
taip pat traktuojamas kaip bet koks simbolis. Todėl (twitter|x).com/.*
taip pat atitinka, pavyzdžiui, twitter1com/
arba x_com/
.
Kad to išvengtumėte, galite pakeisti į (twitter|x)\.com/.*
. \
naudojamas specialiajam simboliui išvengti.
Tačiau tokių URL bendroje interneto aplinkoje nėra. Todėl, jei pageidaujate, galite palikti .
kaip specialųjį simbolį. Jūsų taisyklė skirta jūsų pačių naudojimui, todėl įgyvendinkite ją taip, kaip jums atrodo tinkama.
2 žingsnis: Nustatykite „Nukreipti į“
Tiesiog nurodykite URL taip:
https://insighttimer.com/saraauster/guided-meditations/calm
Dabar „Redirect Web“ nukreips jus į meditaciją, kai pasieksite „Twitter“!
2 atvejis: Pašalinkite 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 anonimizuotumėte save.
Šiuo atveju lengviausias būdas yra Grupės fiksavimo apdorojimo parinktis:
- Nukreipti iš:
https://example.com/*
(Pakaitos simbolis) - Nukreipti į:
$0
- Grupės fiksavimo apdorojimas:
- Grupė:
$0
- Procesas: Pakeisti pasikartojimus
- Tikslas:
&?source=[^&]*
- Pakeitimas: (nėra)
- 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ėkite užklausos parametrus prie URL
Tarkime, yra svetainė example.com
, kuri pagal numatytuosius nustatymus rodo mobilųjį išdėstymą, bet jūs pageidaujate darbalaukio išdėstymo. Laimei, svetainė palaiko layout
užklausos parametrą, kad nurodytų, kokį išdėstymą svetainė rodo. Sukurkime taisyklę, kuri automatiškai prideda 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 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 nukreipia į https://example.com/hello?layout=desktop
.
Šiuo atveju galite nurodyti išskirtą URL šabloną, kuris leidžia pasiekti be nukreipimo, pavyzdžiui, su Reguliariąja išraiška:
.*[&?]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 galite sujungti tik su &
. ?
kaip specialusis 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
()
, 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ę pagal
?
kvantifikatorių šablono pabaigoje, kuris atitinka nulį arba vieną kartą. - Išoriniai
()
ir vidiniai()
gali būti nurodyti su$2
ir$3
vėliau.
- Tai taip pat atitinka tuščią eilutę pagal
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 kitą „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 pasikartojimus
- Tikslas:
\?(.*)
- Pakeitimas:
&$1
- Tikslas:
- Grupė:
Tai tik pavyzdys. Taip pat galite sukurti kelias taisykles, kad išspręstumėte kiekvieną problemą. Tai gali būti daug paprasčiau.