Skip to main content

Noțiuni introductive

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

(Puteți afla, de asemenea, detalii despre setările regulilor pe pagina Setări regulă.)

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. Haideți să creăm o regulă pentru asta!

Pasul 1. Configurați "Redirecționare de la"

În primul rând, 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 își va schimba din nou decizia pentru a o anula. Prin urmare, să vizăm atât twitter.com, cât și x.com.

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

https://(twitter|x).com/.*
  • (twitter|x): vizează atât twitter, cât și x. (| se numește pipe.)
  • .*: Este la fel ca * din Wildcard. Mai exact, . înseamnă orice caracter și * înseamnă orice înainte de acest simbol repetat de un număr oricât de mare de 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 spațiu de joacă pentru a analiza modul în care funcționează modelul dvs. de Expresie Regulată.

[!NOTĂ] În Expresiile Regulate, . din (twitter|x).com este, de asemenea, tratat ca orice caracter. Prin urmare, (twitter|x).com/.* se potrivește și cu, de exemplu, twitter1com/ sau x_com/.

Pentru a evita acest lucru, o puteți schimba în (twitter|x)\.com/.*. \ este utilizat pentru a "escape" un caracter special.

Totuși, 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 uz personal, deci implementați-o cum credeț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: Eliminarea parametrilor 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 Procesarea grupului de captură este cea mai simplă modalitate:

  • Redirecționare de la: https://example.com/* (Wildcard)
  • Redirecționare către: $0
  • Procesarea grupului de captură:
    • Grup: $0
    • Proces: Înlocuire apariții
      • Ț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

Dacă doriți să eliminați mai mulți parametri, adăugați mai multe procese.

Cazul 3: Adăugarea parametrilor de interogare la URL

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

Poate 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ționalitate se numește substituție.

[!SUGESTIE] Substituția este disponibilă și pentru modul Wildcard, deoarece este convertită intern în Expresie Regulată.

Totuși, există câteva probleme cu aceste setări.

Problema 1: Buclă infinită

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

În acest caz, puteți specifica un model 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 fie cu &, fie cu ?
  • [^&]*: 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 alătura 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

Haideți 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 ?.
    • Aceasta este încadrată cu () astfel încât să o puteți referenția cu $1 mai târziu.
  • (\?(.*))?: Se potrivește cu un șir care începe cu ?, ceea ce înseamnă parametri de interogare.
    • Aceasta se potrivește și cu șirul gol prin cuantificatorul ? de la sfârșitul modelului, care se potrivește de zero sau o dată.
    • ()-ul exterior și ()-ul interior pot fi referențiate cu $2 și $3 mai târziu.

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

[!NOTĂ] RegExr afișează o eroare atunci când nu "escapați" / cu \. Deși o puteți "escape", nu este necesar, deoarece Redirect Web utilizează un motor diferit de la Apple care nu necesită "escaping".

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ă majoră în general, dar dacă doriți să îl 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ă)
  • Procesarea grupului de captură:
    • Grup: $3
    • Proces: Înlocuire apariții
      • Ț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.