Darba sākšana
Šajā lapā ir aprakstīti bieži lietoti gadījumi noteikumu izveidei lietotnē Redirect Web.
(Sīkāk par noteikumu iestatījumiem varat uzzināt lapā Noteikumu iestatījumi.)
1. gadījums: atveriet citu vietni
Pieņemsim, ka esat atkarīgs no Twitter, un jūs nolemjat meditēt Insight Timer, ikreiz, kad nejauši atverat Twitter. Izveidosim noteikumu tam!
1. solis. Iestatiet "Pārvirzīt no" (Redirect From)
Vispirms lietotnē ir jāiestata sadaļa Redirect From ekrānā Edit Rule. Mērķi ir URL, kas sākas ar https://twitter.com/
.
Šajā gadījumā varat norādīt šādu modeli Wildcard režīmā:
https://twitter.com/*
Wildcard režīmā *
nozīmē, ka tas atbilst jebkam (= nullei vai vairākām rakstzīmēm).
Tomēr pagaidiet. twitter.com
tika pārdēvēts par x.com
. Jūs varat vienkārši aizstāt twitter.com
ar x.com
, taču neviens nezina, kad jaunais īpašnieks atkal pārdomās un to atjaunos. Tāpēc mērķēsim uz abiem – twitter.com
un x.com
.
Lai to izdarītu, pārslēdzieties no Wildcard uz Regular Expression un iestatiet šo kā modeli:
https://(twitter|x).com/.*
(twitter|x)
: tas mērķē gan uztwitter
, gan uzx
. (|
sauc par cauruli.).*
: tas ir tas pats, kas Wildcard*
. Precīzāk,.
nozīmē jebkuru rakstzīmi, un*
nozīmē jebko pirms šī simbola, kas atkārtots jebkuru reižu skaitu, kā rezultātā tas atbilst jebkam.
Regulārā izteiksme ir nedaudz sarežģīta, taču, kad pie tās pieradīsiet, tā kļūs par spēcīgu rīku. Mēs iesakām izmantot RegExr kā rīku, lai analizētu, kā darbojas jūsu regulārās izteiksmes modelis.
Regulārajās izteiksmēs .
modelī (twitter|x).com
arī tiek uzskatīts par jebkuru rakstzīmi. Tāpēc (twitter|x).com/.*
atbilst arī, piemēram, twitter1com/
vai x_com/
.
Lai to izvairītos, varat to mainīt uz (twitter|x)\.com/.*
. \
tiek izmantots, lai izvairītos no speciālas rakstzīmes.
Tomēr šādu URL vispārējā interneta vidē nav. Tāpēc, ja vēlaties, varat atstāt .
kā speciālo rakstzīmi. Jūsu noteikums ir paredzēts jūsu pašu lietošanai, tāpēc ieviesiet to, kā uzskatāt par piemērotu.
2. solis: Iestatiet "Pārvirzīt uz" (Redirect To)
Vienkārši norādiet URL šādi:
https://insighttimer.com/saraauster/guided-meditations/calm
Tagad Redirect Web jūs novirzīs uz meditāciju, kad piekļūsiet Twitter!
2. gadījums: noņemt vaicājuma parametrus no URL
Pieņemsim, ka example.com
URL ir vaicājuma parametrs source=twitter
, un jūs nolēmāt to noņemt, lai kļūtu anonīms.
Šajā gadījumā Capturing Group Processing opcija ir vienkāršākais veids:
- Pārvirzīt no (Redirect From):
https://example.com/*
(Wildcard) - Pārvirzīt uz (Redirect To):
$0
- Apķeršanas grupas apstrāde (Capturing Group Processing):
- Grupa (Group):
$0
- Process (Process): Aizstāt gadījumus (Replace Occurrences)
- Mērķis (Target):
&?source=[^&]*
- Aizvietojums (Replacement): (nav)
- Teksta modelis (Text Pattern): Regulārā izteiksme (Regular Expression)
- Mērķis (Target):
- Grupa (Group):
Šis noteikums darbojas šādi:
https://example.com/?source=twitter
↪ https://example.com/?
https://example.com/?hello=world&source=twitter&foo=bar
↪ https://example.com/?hello=world&foo=bar
Ja vēlaties noņemt vairāk parametru, pievienojiet vairāk procesu.
3. gadījums: pievienojiet vaicājuma parametrus URL
Pieņemsim, ka ir vietne example.com
, kas pēc noklusējuma rāda mobilā izkārtojumu, bet jūs dodat priekšroku tās darbvirsmas izkārtojumam. Par laimi, vietne atbalsta layout
vaicājuma parametru, lai norādītu, kādu izkārtojumu vietne parāda. Izveidosim noteikumu, kas automātiski pievieno layout=desktop
.
Iespējams, jūs domājat, ka to varētu definēt šādi:
- Pārvirzīt no (Redirect From):
https://example.com/.*
(Regular Expression) - Pārvirzīt uz (Redirect To):
$0?layout=desktop
$0
atsaucas uz mērķa URL. Ja mēģināt piekļūt example.com/hello
, jūs tiekat novirzīts uz example.com/hello?layout=desktop
. Šī funkcija tiek saukta par aizstāšanu.
Aizstāšana ir pieejama arī Wildcard režīmam, jo tas iekšēji tiek konvertēts uz regulāro izteiksmi.
Tomēr ar šiem iestatījumiem ir dažas problēmas.
1. problēma: bezgalīga cilpa
Pašreizējais iestatījums rada bezgalīgu pārvirzīšanas cilpu, jo https://example.com/.*
mērķē arī uz https://example.com/hello?layout=desktop
.
Šajā gadījumā varat norādīt izslēgtu URL modeli, kas ļauj piekļūt bez pārvirzīšanas, piemēram, šādi ar regulāro izteiksmi:
.*[&?]layout=[^&]*.*
.*
: atbilst jebkam[&?]
: atbilst vai nu&
, vai?
[^&]*
: atbilst jebkam, izņemot&
2. problēma: nevar pareizi apstrādāt esošos parametrus
Ja mērķa URL jau ir citi vaicājuma parametri, piemēram, example.com/hello?theme=dark
, galamērķis būs example.com/hello?theme=dark?layout=desktop
(URL ir divi ?
), taču parametrus var savienot tikai ar &
. ?
kā speciālā rakstzīme ir atļauta tikai parametru sākumā. Tāpēc tā netiek uzskatīta par derīgu parametru.
Šajā gadījumā mainiet iestatījumus šādi:
- Pārvirzīt no (Redirect From):
(https://example.com/[^?]*)(\?(.*))?
- Pārvirzīt uz (Redirect To):
$1?layout=desktop&$3
Aplūkosim soli pa solim.
(https://example.com/[^?]*)
: Atbilst daļai līdz iepriekšējai?
rakstzīmei.[^?]*
atbilst jebkam, izņemot?
.- Tas ir ietverts
()
, lai to vēlāk varētu atsaukties ar$1
.
(\?(.*))?
: Atbilst virknei, kas sākas ar?
, kas nozīmē vaicājuma parametrus.- Tas atbilst arī tukšai virknei, izmantojot
?
kvantifikatoru modeļa beigās, kas atbilst nullei vai vienai reizei. - Ārējo
()
un iekšējo()
var vēlāk atsaukties ar$2
un$3
.
- Tas atbilst arī tukšai virknei, izmantojot
RegExr var palīdzēt saprast detaļas.
RegExr parāda kļūdu, ja neatkāpjat /
ar \
. Lai gan to var atkāpt, tas nav nepieciešams, jo Redirect Web izmanto citu Apple dzinēju, kas neprasa atkāpšanu.
Tas nav ideāls risinājums, jo tas novirza example.com/hello
uz example.com/hello?layout=desktop&
, kas ietver nevajadzīgu &
URL beigās. Parasti tas nav liels darījums, bet, ja vēlaties to noņemt, varat izmantot Capturing Group Processing.
Noslēgumā, tas ir gala rezultāts:
- Pārvirzīt no (Redirect From):
(https://example.com/[^?]*)((\?(.*))?)
(Regular Expression) - Pārvirzīt uz (Redirect To):
$1?layout=desktop$3
- Izslēgts URL modelis (Excluded URL Pattern):
.*[&?]layout=[^&]*.*
(Regular Expression) - Apķeršanas grupas apstrāde (Capturing Group Processing):
- Grupa (Group):
$3
- Process (Process): Aizstāt gadījumus (Replace Occurrences)
- Mērķis (Target):
\?(.*)
- Aizvietojums (Replacement):
&$1
- Mērķis (Target):
- Grupa (Group):
Šis ir tikai piemērs. Varat arī izveidot vairākus noteikumus, lai risinātu katru problēmu. Tas var būt daudz vienkāršāk.