Nginx

Cum se utilizează Rescrierea URL

Cum se utilizează Rescrierea URL
Rescrierea URL-ului este un proces de modificare a adresei URL a cererii la altceva așa cum este definit în serverul web. Nginx folosește modulul ngx_http_rewrite_module, care utilizează în principal directivele de returnare, rescriere în scopul rescrierii. În afară de aceste directive definite în acest modul, directiva de hartă, definită în ngx_http_map_module, poate fi utilizată și pentru rescrierea URL-urilor cu ușurință. Acest ghid intenționează să explice aproximativ 2 directive principale - returnarea, rescrierea și steagurile acestora, modul în care funcționează și aplicațiile lor.

Condiții prealabile

Acest ghid este optimizat pentru Nginx 1.0.1 și mai sus și, prin urmare, este foarte recomandat să actualizați instanța Nginx existentă la versiunea menționată anterior sau mai sus. Cu toate acestea, unele dintre comenzi, sintaxe ar putea funcționa în continuare pentru orice versiune înainte de versiunea menționată anterior. Deoarece acest ghid se referă la rescrierea adreselor URL, care este un subiect puțin avansat, presupune că publicul este conștient de procedura de instalare a Nginx și, prin urmare, nu este explicat aici.

Întoarcere

Returnarea este directiva de bază care efectuează rescrierea adreselor URL și este ușor de înțeles. Nu folosește expresii regulate, dar poate include variabile de analizat, captate din calea blocului de locație. De obicei, directiva return este utilizată pentru a redirecționa adresa URL a cererii către o altă locație și, prin urmare, folosește adesea coduri HTTP precum 301 pentru redirecționare permanentă și 302 pentru redirecționare temporară. Următoarele fragmente de cod demonstrează câteva dintre cazurile de utilizare ale directivei de returnare.

Următorul fragment de cod redirecționează adresa URL a solicitării către Google.com. Poate fi utilizat fie direct sub blocul de cod server, fie sub un bloc de cod de locație, dar asigurați-vă că nu redirecționați către același domeniu pentru a evita bucla de redirecționare

returnează 301 https: // google.com;

Următorul fragment de cod redirecționează adresa URL a cererii către Nucuta.com împreună cu calea, de exemplu exemplul menționat anterior nu conține nicio cale, parametri și, prin urmare, indiferent de adresa URL care este tastată în bara de adrese, cererea este redirecționată către domeniul rădăcină al Google, în timp ce în exemplul următor, calea, împreună cu parametrii sunt reportați fără numele domeniului. Alternativ, $ is_args $ args poate fi folosit, dar apoi în loc de $ request_uri, variabila $ uri ar trebui utilizată, deoarece $ request_uri conține și parametri ai adresei URL. Dacă cerința este de a redirecționa către un director diferit al aceluiași domeniu, atunci utilizați variabila $ host în loc de numele domeniului în directivă return, de exemplu în exemplul următor în loc de nucuta.com, utilizați $ host.

return 301 https: // nucuta.com $ request_uri;

Următorul fragment de cod redirecționează solicitarea primită către directorul de cale al aceluiași domeniu și schemă, adică dacă următorul fragment de cod este utilizat în http: // Linux.com și dacă un vizitator i-a făcut o cerere, este redirecționat către directorul de cale și, prin urmare, următorul fragment de cod este util atunci când gestionați un număr mare de site-uri web. Aici schema $ definește protocolul adresei URL, cum ar fi FTP, HTTP, HTTPS, iar $ host definește domeniul serverului curent cu extensia sa de domeniu, cum ar fi Google.com, Linux.Net etc. Deoarece aceasta nu efectuează nicio redirecționare a protocolului, cum ar fi de la HTTP la HTTP, trebuie făcută manual ca în al doilea exemplu.

returnează schema 301 $: // $ gazdă / cale;
if (schema $ != "https")
returnează 301 https: // $ host $ request_uri;

Un alt caz de utilizare util al directivei return este abilitatea de a include variabile regex, dar pentru aceasta expresia regulată ar trebui specificată în blocul de locație și ar trebui să capteze un model, atunci modelul capturat poate fi combinat cu adresa URL existentă în directiva return în scopul redirecționării, de exemplu în exemplul următor, când se face o cerere de accesare a unui fișier text, acesta captează numele fișierului text în blocul de locație, apoi trece numele respectiv la directiva return, apoi directiva return o combină cu cea existentă URL pentru a redirecționa solicitarea către alt director.

locație ~ * ^ / ([^ /]+.txt) $
returnează 301 / chrome / $ 1;

Rescrie

Rescrierea este o directivă utilizată pentru rescrierea URL-urilor interne în serverul web, fără a expune mecanismul de bază către partea clientului. Conform sintaxei sale, este utilizat cu expresii regulate. Sintaxa de bază este următoarea. Substituentul regex este pentru utilizarea expresiilor regulate, substituentul înlocuitor este pentru înlocuirea adresei URL potrivite, în timp ce semnalizatorul este pentru manipularea fluxului de execuție. În acest moment, semnalizatoarele utilizate în directiva de rescriere sunt break, permanente, redirecționate și ultime.

rescrie regex replacement [flag];

Înainte de a trece la expresiile regulate, înlocuirile, capturarea modelelor și variabila, este important să știți despre modul în care steagurile fac ca motorul intern al Nginx să se comporte. Există patru steaguri majore utilizate cu directiva de rescriere, așa cum s-a explicat mai devreme, printre care permanent, steagurile de redirecționare pot fi asociate împreună, deoarece ambele efectuează aceeași funcționalitate, adică redirecționarea.

Redirecţiona

Semnalizarea de redirecționare este utilizată pentru a semnaliza browserului că redirecționarea este temporară, ceea ce este util și în crawlerele motorului de căutare pentru a recunoaște că pagina este temporar îndepărtată și va fi reintrodusă în locația inițială ceva timp mai târziu. Când pagina semnalează că este 302, motoarele de căutare nu fac modificări în indexarea acesteia și, prin urmare, vizitatorii văd în continuare pagina originală în indexul motorului de căutare atunci când caută, ceea ce înseamnă că vechea pagină nu este eliminată și, în plus, toate calitatile , cum ar fi rangul paginii, sucul link-ului nu sunt transmise la noua pagină.

Locație /

rescrie ^ http: // 155.138.XXX.Redirecționare XXX / cale;

Permanent

Semnalizatorul permanent este utilizat pentru a semnaliza browserului că redirecționarea este permanentă, ceea ce este de asemenea util în crawlerele motorului de căutare pentru a recunoaște că pagina este îndepărtată permanent și NU va fi restabilită în locația inițială ceva timp mai târziu, cum ar fi cu mutarea temporară. Când pagina semnalează că este 301, motoarele de căutare fac unele modificări în indexarea acesteia și, prin urmare, vizitatorii văd noua pagină în indexul motorului de căutare în loc de vechea pagină atunci când caută, ceea ce înseamnă că vechea pagină este înlocuită cu noua pagină, în plus, toate calitatea, cum ar fi rangul paginii, link-ul de suc, sunt transmise la noua pagină.

Locație /

rescrie ^ http: // 155.138.XXX.XXX / cale permanentă;

Expresie regulată, captare de modele și variabile.

Nginx folosește expresia regulată foarte mult cu directiva de rescriere și, astfel, cunoașterea expresiilor regulate este utilă în acest segment.  Există mai multe tipuri de expresii regulate, dar Nginx folosește Perl Compatible Regular Expressions aka PCRE. Având un instrument de testare regulată a expresiei este util pentru a vă asigura că modelul scris funcționează în prealabil folosindu-l în fișierul de configurare Nginx. Acest ghid recomandă https: // regex101.com / ca instrument și toate exemplele următoare sunt testate cu instrumentul menționat anterior.

Expresii obisnuite

rescrie ^ / fr / (.*) $ http: // nucuta.com / 1 $ permanent;

Un model tipic al directivei de rescriere merge ca mai sus, conține directiva de rescriere la început, apoi cu un spațiu „modelul” în expresie regulată, apoi cu un spațiu „înlocuirea”, apoi în cele din urmă „steagul”. Directiva de rescriere poate fi plasată oriunde în parantezele serverului, dar este recomandat să o păstrați după specificarea directivelor de ascultare, nume_server, rădăcină și index. Când un vizitator face o cerere către server, o adresă URL este trimisă împreună cu cererea, atunci dacă adresa URL este potrivită cu modelul de expresie regulată specificat în directiva de rescriere, este rescris pe baza înlocuirii, atunci fluxul de execuție este manipulat pe baza pe steag.

Modelul de expresie regulată folosește paranteze pentru a indica grupul, al cărui șir secundar este extras din URL după potrivirea modelului regex cu adresa URL a cererii, apoi acel șir scos din URL este atribuit variabilei din „Înlocuirea” directivei de rescriere. Dacă există mai multe grupuri potrivite, sub-șirul fiecărui grup potrivit este atribuit variabilelor din „înlocuire” în ordine numerică, ceea ce înseamnă că șirul primului grup potrivit este atribuit primei variabile ($ 1), sub șir al al doilea grup potrivit este atribuit celei de-a doua variabile (2 USD) și așa mai departe.

Din 4 steaguri, 2 steaguri au fost deja explicate în acest ghid, celelalte rămase sunt ultimele și se rup. Înainte de a înțelege cum funcționează steagurile rămase, este important să înțelegeți cum se comportă motorul Nginx cu directivele de rescriere. Când este trimisă o adresă URL împreună cu o cerere, motorul Nginx încearcă să o potrivească cu un bloc de locație. Indiferent dacă este potrivită sau nu, dacă o directivă, cum ar fi rescrierea, returnarea este dat peste, este executată secvențial. Dacă adresa URL trimisă se potrivește cu modelul unei directive de rescriere, motorul Nginx execută întregul fișier de configurare, indiferent de locul în care directiva de rescriere este specificată ca o buclă, până când URL-ul nou rescris se potrivește cu unul dintre blocurile de locație.

Următoarea adresă URL este utilizată ca demonstrație pentru a explica modul în care ambele semnalizatoare fac ca fluxul de execuție al motorului Nginx să se comporte cu directiva de rescriere. Următoarea captură de ecran ilustrează structura fișierului serverului web.

http: // 155.138.XXX.XXX / browser / eșantion.txt (adresa URL trimisă ca solicitare)

Când nu este folosit niciun steag

Când nu se folosește niciun semnal, ambele directive de rescriere sunt executate secvențial; prin urmare, prima adresă URL din următoarea listă se transformă în 2nd, apoi 2nd Adresa URL se transformă în ultima adresă URL Deci, atunci când eșantionul.fișierul txt din folderul browserului este solicitat, serverul web servește de fapt eșantionul.txt din folderul rădăcină. Deoarece rescrierea URL-ului este complet abstractizată de browser, nu vede nicio diferență în difuzare în comparație cu directiva de returnare care specifică browserul dacă solicitarea a fost redirecționată sau nu cu un număr HTTP.

  1. http: // 155.138.XXX.XXX / browser / eșantion.txt
  2. http: // 155.138.XXX.XXX / crom / probă.txt
  3. http: // 155.138.XXX.XXX / eșantion.txt
Locație /

rescrie ^ / browser / (.*) $ / chrome / $ 1;
rescrie ^ / chrome / (.*) $ / $ 1;
locație / crom
try_files $ uri $ uri / = 404;

Când Fie Break, sau Last Flag este specificat în afara blocului de locație

Când se specifică fie pauză sau ultimul semnal în afara blocului de locație, directivele de rescriere după directiva de rescriere potrivită nu sunt deloc analizate, de exemplu în exemplul următor URL-ul cererii este rescris în 2nd una din lista următoare, indiferent de steagul folosit, și atât.

  1. http: // 155.138.XXX.XXX / browser / eșantion.txt
  2. http: // 155.138.XXX.XXX / crom / probă.txt
Locație /

rescrie ^ / browser / (.*) $ / chrome / $ 1 last; #break
rescrie ^ / chrome / (.*) $ / $ 1 last; #break
locație / crom
try_files $ uri $ uri / = 404;

Când ultimul semnal este utilizat în interiorul unui bloc de locație

Când ultimul semnal este utilizat în interiorul unui bloc de locație, acesta nu mai analizează directivele de rescriere din interiorul acelui bloc de locație și se aruncă în următorul bloc de locație de rescriere dacă URL-ul rescris este asociat cu calea blocului de locație respectiv, atunci execută directivă ulterioară de rescriere din interior.

  1. http: // 155.138.XXX.XXX / browser / eșantion.txt
  2. http: // 155.138.XXX.XXX / crom / probă.txt
  3. http: // 155.138.XXX.XXX / eșantion.txt
Locație /
rescrie ^ / browser / (.*) $ / chrome / $ 1 ultimul;

locație / crom
rescrie ^ / chrome / (.*) $ / $ 1 ultimul;
try_files $ uri $ uri / = 404;

Când pauza de semnalizare este utilizată în interiorul unui bloc de locație

Pe de altă parte, atunci când se află într-un bloc de locație, opriți steagul, opriți analiza directivelor de rescriere, indiferent de locul în care acestea se află, atunci când o directivă de rescriere este potrivită cu adresa URL a cererii și trimite conținutul utilizatorului.

Locație /
rescrie ^ / browser / (.*) $ / chrome / 1 $ pauză;

locație / crom
rescrie ^ / chrome / (.*) Pauză $ / $ 1;
try_files $ uri $ uri / = 404;

Concluzie

Rescrierea adreselor URL este un proces de rescriere a adreselor URL într-un server web. Nginx oferă mai multe directive, cum ar fi returnarea, rescrierea, directivele hărții pentru ao face posibilă. Acest ghid demonstrează ce sunt directivele privind returnarea și rescrierea și modul în care acestea sunt utilizate pentru rescrierea URL-urilor cu ușurință. Așa cum s-a demonstrat în exemple, directiva de returnare este potrivită pentru a semnaliza browserul, iar motorul de căutare accesează cu crawlere locația paginii, în timp ce directiva de rescriere este utilă în abstractizarea procesului de rescriere a adreselor URL, fără a permite browserului să știe ce se întâmplă în spatele scenei. Acest lucru este destul de util în servirea conținutului printr-un CDN, server cache sau dintr-o altă locație din rețea. Utilizatorii nu știu niciodată de unde provine resursa, deoarece browserul arată doar adresa URL care le-a fost dată.

WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...
Mouse left-click button not working on Windows 10
If you are using a dedicated mouse with your laptop, or desktop computer but the mouse left-click button is not working on Windows 10/8/7 for some rea...
Cursor jumps or moves randomly while typing in Windows 10
If you find that your mouse cursor jumps or moves on its own, automatically, randomly while typing in Windows laptop or computer, then some of these s...