Skip to main content

Noțiuni introductive

Această pagină descrie cazurile de utilizare comune pentru crearea regulilor în aplicația Redirect Web.

(De asemenea, puteți afla detalii despre setările regulilor pe pagina Setări reguli.)

Cazul 1: Deschideți un alt site web

Să presupunem că sunteți dependent de Twitter, și decideți să meditați în Insight Timer ori de câte ori deschideți accidental Twitter. Să creăm o regulă pentru asta!

Pasul 1. Configurați “Redirecționare de la”

Mai întâi, ar trebui să configurați secțiunea Redirecționare de la în ecranul Editare regulă din aplicație. Țintele sunt URL-uri care încep cu https://twitter.com/.

În acest caz, puteți specifica următorul model cu modul Wildcard:

https://twitter.com/*

În modul Wildcard, * înseamnă că se potrivește cu orice (= zero sau mai multe caractere).

Totuși, stați puțin. twitter.com a fost redenumit în x.com. Puteți pur și simplu să înlocuiți twitter.com cu x.com dar nimeni nu știe când noul proprietar se va răzgândi din nou să-l readucă. Prin urmare, să vizăm atât twitter.com, cât și x.com.

Pentru a face acest lucru, comutați de la Wildcard la Expresie regulată, și setați acest lucru ca model:

https://(twitter|x).com/.*
  • (twitter|x): vizează atât twitter, cât și x. (| se numește o bară verticală.)
  • .*: Este la fel ca * din Wildcard. Mai specific, . înseamnă orice caracter și * înseamnă orice înainte de acest simbol repetat oricâte ori, rezultând că se potrivește cu orice.

Expresia regulată este puțin complicată, dar odată ce vă obișnuiți cu ea, va fi un instrument puternic. Vă recomandăm să utilizați RegExr ca un loc de joacă pentru a analiza modul în care funcționează modelul dvs. de expresie regulată.

note

În expresiile regulate, . din (twitter|x).com este, de asemenea, tratat ca orice caracter. Prin urmare, (twitter|x).com/.* se potrivește și, de exemplu, twitter1com/ sau x_com/.

Pentru a evita acest lucru, îl puteți schimba în (twitter|x)\.com/.*. \ este folosit pentru a evada un caracter special.

Cu toate acestea, nu există astfel de URL-uri în mediul general de internet. Prin urmare, puteți lăsa . ca un caracter special dacă preferați. Regula dvs. este pentru uzul dvs. propriu, așa că implementați-o așa cum considerați de cuviință.

Pasul 2: Configurați “Redirecționare către”

Pur și simplu specificați URL-ul după cum urmează:

https://insighttimer.com/saraauster/guided-meditations/calm

Acum, Redirect Web vă duce la meditație atunci când accesați Twitter!

⬇️ Descărcați regula

Cazul 2: Eliminați parametrii de interogare din URL

Să presupunem că există un parametru de interogare source=twitter într-un URL de example.com, și ați decis să-l eliminați pentru a vă anonimiza.

În acest caz, opțiunea Procesare grup de captură este cea mai ușoară cale:

  • Redirecționare de la: https://example.com/* (Wildcard)
  • Redirecționare către: $0
  • Procesare grup de captură:
    • Grup: $0
    • Proces: Înlocuiește aparițiile
      • Țintă: &?source=[^&]*
      • Înlocuire: (nimic)
      • Model text: Expresie regulată

⬇️ Descărcați regula

Această regulă funcționează după cum urmează:

https://example.com/?source=twitter
↪ https://example.com/?

https://example.com/?hello=world&source=twitter&foo=bar
↪ https://example.com/?hello=world&foo=bar

If you want to remove more parameters, add more processes.

Cazul 3: Adăugați parametri de interogare la URL

Să spunem că există un site web numit example.com care afișează un aspect mobil implicit, dar preferați aspectul lor desktop. Din fericire, site-ul web acceptă un parametru de interogare layout pentru a specifica ce aspect afișează site-ul web. Să creăm o regulă care adaugă automat layout=desktop.

Poate că credeți că ați putea defini astfel:

  • Redirecționare de la: https://example.com/.* (Expresie regulată)
  • Redirecționare către: $0?layout=desktop

$0 face referire la URL-ul țintă. Dacă încercați să accesați example.com/hello, sunteți redirecționat către example.com/hello?layout=desktop. Această funcție se numește substituție.

tip

Substituția este disponibilă și pentru modul Wildcard, deoarece este convertită intern în Expresie regulată.

Cu toate acestea, există câteva probleme cu aceste setări.

Problema 1: Buclă infinită

Setarea curentă creează o buclă de redirecționare infinită, deoarece https://example.com/.* vizează și https://example.com/hello?layout=desktop.

În acest caz, puteți specifica un model de URL exclus care vă permite să accesați fără redirecționare, astfel, cu Expresie regulată:

.*[&?]layout=[^&]*.*
  • .*: Se potrivește cu orice
  • [&?]: Se potrivește cu & sau ?
  • [^&]*: Se potrivește cu orice, cu excepția &

Problema 2: Nu poate gestiona corect parametrii existenți

Dacă URL-ul țintă are deja alți parametri de interogare, cum ar fi example.com/hello?theme=dark, destinația va fi example.com/hello?theme=dark?layout=desktop (Există două ? în URL), dar puteți uni parametrii doar cu &. ? ca caracter special este permis doar la începutul parametrilor. Deci nu este tratat ca un parametru valid.

În acest caz, schimbați setările astfel:

  • Redirecționare de la: (https://example.com/[^?]*)(\(?(.*))?
  • Redirecționare către: $1?layout=desktop&$3

Să aruncăm o privire pas cu pas.

  • (https://example.com/[^?]*): Se potrivește cu partea până la caracterul anterior lui ?.
    • [^?]* se potrivește cu orice, cu excepția ?.
    • Acesta este învelit cu () astfel încât să îl puteți referi cu $1 mai târziu.
  • (\(?(.*))?: Se potrivește cu un șir care începe cu ?, ceea ce înseamnă parametri de interogare.
    • Acesta se potrivește și cu șirul gol prin cuantificatorul ? de la sfârșitul modelului, care se potrivește de zero sau o dată.
    • () exterior și () interior pot fi referite cu $2 și $3 mai târziu.

RegExr vă poate ajuta să înțelegeți detaliile.

note

RegExr afișează o eroare atunci când nu evadați / cu \. Deși o puteți evada, nu este necesar, deoarece Redirect Web utilizează un motor diferit de la Apple care nu necesită evadare.

Aceasta nu este o soluție perfectă, deoarece redirecționează example.com/hello către example.com/hello?layout=desktop&, care include un & inutil la sfârșitul URL-ului. Nu este o problemă mare în general, dar dacă doriți să o eliminați, puteți utiliza Procesarea grupului de captură.

În concluzie, acesta este rezultatul final:

  • Redirecționare de la: (https://example.com/[^?]*)((\(?(.*))?) (Expresie regulată)
  • Redirecționare către: $1?layout=desktop$3
  • Model URL exclus: .*[&?]layout=[^&]*.* (Expresie regulată)
  • Procesare grup de captură:
    • Grup: $3
    • Proces: Înlocuiește aparițiile
      • Țintă: \?(.*)
      • Înlocuire: &$1

⬇️ Descărcați regula

Acesta este doar un exemplu. Puteți crea și mai multe reguli pentru a gestiona fiecare problemă. Poate fi mult mai simplu.