5 sfaturi de bază pentru utilizarea expresiilor regulate (RegEx) în lac

  • Home
  • Uncategorized
  • 5 sfaturi de bază pentru utilizarea expresiilor regulate (RegEx) în lac
5 sfaturi de bază pentru utilizarea expresiilor regulate (RegEx) în lac

5 sfaturi de bază pentru utilizarea expresiilor regulate (RegEx) în lac

Chiar dacă Varnish este un instrument extrem de popular din cutie, veți descoperi rapid că va trebui să îl personalizați pentru subtilitățile site-ului dvs.

Fie că este vorba de transmiterea rezultatelor casetei de căutare, de permiterea anumitor cookie-uri sau de returnarea diferitelor răspunsuri la antet, utilizarea expresiilor regulate este proeminentă în programarea VCL.

Varnish are unele ciudatenii cu implementarea expresiilor regulate, așa că vom acoperi primele cinci sfaturi.

În Varnish, puteți folosi expresii regulate la fel ca orice altă limbă. Cea mai comună utilizare este funcția vcl_recv pentru a potrivi adresele URL. În general, trebuie să scapi ,. ?, &, dar nu /. Acesta poate fi un punct de confuzie pentru unii oameni, așa că voi oferi câteva exemple.

Varnish folosește expresii regulate compatibile cu Perl, așa că odată ce ați trecut prin aceste elemente de bază, vă recomand să consultați pagina principală pentru PCRE. Sincer, totuși, în majoritatea cazurilor veți avea nevoie doar de expresii regulate simple în VCL.

În plus, pentru a vă dezvolta și testa expresiile regulate, vă sugerez să utilizați un instrument precum https://regex101.com/. Acest lucru vă poate accelera dramatic dezvoltarea și reduce numărul de erori.

1. Exact egal și aproximativ egal

Utilizarea == și ~ determină dacă se potrivește exact șirul sau se potrivește dacă șirul apare oriunde în termen. Rețineți că == este o comparație strictă și nu folosește expresii regulate, în timp ce ~ folosește întotdeauna expresii regulate.

# Aceasta se va potrivi numai cu pagina care a fost /blog/ req.url == ‘/blog/’ # Aceasta se va potrivi cu /blog/ și cu orice din acel director. # Adică /blog/varnish-article/, /blog/wordpress-article/, /how/this-is-a-blog/ etc req.url ~ ‘blog/’

2. Folosiți ^ pentru a începe un șir și $ pentru a-l termina

Uneori vrei să potriviți doar la începutul sau la sfârșitul unui termen (sau ambele). Lacul face și acest lucru destul de simplu.

# Pentru a potrivi la începutul unui șir, utilizați ^ req.url ~ „^/blog/” #Matches /blog/article/ but not /article/blog/ # Pentru a potrivi la sfârșitul unui șir folosiți $ req.url ~ „/blog/$” #Se potrivește cu /articol/blog/ dar nu cu /blog/articol/

3. Folosind | pentru a potrivi mai multe opțiuni

Utilizarea unui SAU (|) poate oferi o metodă puternică pentru combinarea mai multor linii într-una singură.

# Puteți înlocui: if ( req.url ~ „jpg” || req.url ~ „png” || req.url ~ „css” || req.url ~ „js” ){…} # Cu: if ( req.url ~ „(jpg|png|css|js)” ) {…}

4. Potrivire wildcard

Ca și în cazul majorității expresiilor regulate, poate fi util să folosiți ?, * și + pentru a potrivi caractere sau șiruri. Acest lucru este pe deplin susținut și de Varnish.

req.url ~ „^/blog/*$” # Potrivește /blog/ cu orice până la sfârșitul șirului # Similar cu req.url ~ „^/blog/” req.url ~ „^/blog/ .+” # Potriviți /blog/a, dar nu /blog/ sau /blog/aa req.url ~ „^/blog/.?” # Potriviți /blog/ și /blog/a, dar nu /blog/aa

5. Înlocuirea prin expresie regulată (regsub și regsubball)

Nu există nicio îndoială că în cele din urmă va trebui să înlocuiți un text într-un termen. Varnish are o funcție numită regsub (și vărul său regsuball ) care caută un șir într-un termen și îl înlocuiește cu un alt șir.

req.url = regsub( req.url, „/?*”, „”) # Acest lucru ar elimina orice șir de interogare din adresa URL req.http.host =reqsub( req.http.host, „www.”, „domain .” ) # Ar înlocui www. cu domeniu., # IE www.Gazduirweb ar deveni domain.Gazduirweb

Concluzie

Lacul face ca utilizarea expresiilor obișnuite să fie destul de simplă și, cu puțină practică, acest lucru va deveni a doua natură pentru tine. Desigur, nu ezitați să lăsați orice întrebări mai jos și vom încerca să le răspundem cât de bine putem!

Dezvăluirea agentului de publicitate

Gazduirweb este o resursă online gratuită care oferă utilizatorilor conținut valoros și servicii de comparare. Pentru a menține această resursă 100% gratuită, primim compensații de la multe dintre ofertele afișate pe site. Alături de factorii cheie de revizuire, această compensație poate afecta modul în care și locul în care apar produsele pe site (inclusiv, de exemplu, ordinea în care apar). Gazduirweb nu include întregul univers al ofertelor disponibile. Opiniile editoriale exprimate pe site sunt strict ale noastre și nu sunt furnizate, susținute sau aprobate de agenții de publicitate.

Politica noastră de revizuire editorială

Site-ul nostru se angajează să publice conținut independent, precis, ghidat de reguli editoriale stricte. Înainte ca articolele și recenziile să fie publicate pe site-ul nostru, acestea sunt supuse unui proces amănunțit de revizuire efectuat de o echipă de editori independenți și experți în materie pentru a asigura acuratețea, actualitatea și imparțialitatea conținutului. Echipa noastră editorială este separată și independentă de agenții de publicitate ai site-ului nostru, iar opiniile pe care le exprimă pe site-ul nostru sunt proprii. Pentru a citi mai multe despre membrii echipei noastre și despre mediul lor editorial, vă rugăm să vizitați pagina Despre a site-ului nostru.

Leave a Reply

Copyright © 1999 - 2022 Phox Operating Company