URL -omskriving

URL -omskriving
URL -en som en klientforespørsler kan endres helt eller klamme ved å bruke Nginx -omskrivingsreglene. I tillegg til å lede strømmen av Nginxs utførende sider, er det primære målet med å oppdatere en URL å varsle kundene om at tjenestene de søker har flyttet. URL -er blir skrevet om ved hjelp av retur- og omskriver kommandoer i Nginx. Den samme oppgaven med å omskrive nettadressene utføres av begge direktiver. Rewrite -direktivet er sterkere enn returdirektivet, da det kan håndtere en komplisert omskriving uten behov for å analysere nettadressene. Vi vil undersøke i denne guiden om hvordan Nginx bruker retur- og omskriver kommandoer for å endre eller omskrive URL -en.

Det anbefales sterkt å oppdatere den nåværende Nginx -forekomsten til den høyere versjonen fordi denne instruksjonen er optimalisert for Nginx versjon 1.0.1 og over. Likevel kan noen av operasjonene og syntaksene fortsatt gjelde for versjonene tidligere enn den som er nevnt.

Returdirektiv i Ubuntu 20.04

Den grunnleggende og godt forstått returkommandoen brukes til å oppnå URL-omskrivningen. Selv om det ikke bruker de vanlige uttrykkene, kan det analysere variablene som er hentet fra banenes vei. Vanligvis brukes returdirektivet til å omdirigere forespørselen til et annet sted. Som et resultat benytter den ofte HTTP -statuskoder som 301 for kontinuerlig omdirigering og 302 for midlertidig omdirigering. Eksemplene på tilfeller av returdirektiv er vist i følgende kodefragmenter:

Implementering av returdirektiv i serverinnstilling

Når du flytter nettstedet ditt til et nytt domene og omdirigerer alle de gamle nettadressene til det nye domenet, kommer returdirektivet i servermiljøet ganske nyttig. Gjør nettstedet ditt til å omdirigere til enten "www" -versjonen eller "ikke-www" -versjonen hjelper også med å kanonikalisere URL-en.

Returdirektivet i forrige serverkontekst endrer URL -en som er beregnet på www.Urlinux.com nettsted som er det gamle domenet til www.Urlinux.com nettsted som er det nye domenet. Når Nginx ser en URL som inneholder www.Urlinux.com Nettstedet, stopper det umiddelbart sidenbehandlingen og gir klienten en 301-respons-kode og gjenoppbygger nettadressen. De $ ordning og $ forespørsel URI er de to variablene som brukes i returdirektivet. De $ forespørsel Variabel URI inkluderer hele URI med alle parametere. Og $ ordning Variabel brukes for å definere URL -skjemaet (HTTP eller HTTPS). Når du skriver om nettadressen, må du huske at begge variablene henter denne informasjonen fra inngangs -url.

Implementering av returdirektiv i stedsinnstilling

I noen tilfeller er det å foretrekke sidene å håndtere domener. Du kan omdirigere sidene til et annet sted ved å bruke returdirektivet som finnes inne i stedsblokken.

Når en forespørsel-URL samsvarer nøyaktig med /artikler /prøver-nginx-mønsteret i eksemplet, omdirigerer Nginx forespørselen til den nye https: // linux.com/nginx/context-nginx/ adresse. Du kan også endre plasseringen av alt for en bestemt vei. Følgende eksempel viser hvordan du kan omdirigere alle sider som er merket som "/prøver" til https: // linux.com/språk.

Omskrivningsdirektiv i Ubuntu 20.04

Webserverens interne evne til å omskrive nettadressene uten å avsløre kjernemetoden til klientmaskinen oppnås gjennom omskrivningsdirektivet. Den bruker de vanlige uttrykkene og samsvarer med syntaks. Erstatningsplassholderen erstatter den matchede URL -en. Regex -plassholderen lar de vanlige uttrykkene brukes. Og flagget gjør at utførelsesstrømmen kan endres. Flaggene går i stykker, permanente, viderekoblinger og sist brukes for tiden i omskrivningsdirektiver.

Syntaksdetaljene er gitt i følgende:

  • Regex: Det vanlige uttrykket bygget ved hjelp av PCRE som brukes på nettadressen til innkommende forespørsler.
  • Erstatnings-URL: Hvis den forespurte URL-en samsvarer med det vanlige uttrykket, endres den forespurte URL-en ved hjelp av erstatningsstrengen.
  • Flagg: Hvorvidt omskrivingskommandoen må behandles videre, avhenger videre av flaggets verdi.

Merk at bare kodene 301 eller 302 kan returneres av omskrivningsdirektivet. Etter omskrivingsdirektivet må et returdirektiv inkluderes eksplisitt hvis du vil returnere noen ekstra koder.

Implementering av omskrivningsdirektiv for statisk side

Ta saken der du vil endre en sides URL, for eksempel https: // linux.com/nginx-prøver til https: // linux.com/otherpage.html. I følgende stedsblokk er det gitt et omskrivningsdirektiv for å utføre den samme oppgaven.

I henhold til lokasjonskommandoen plassering = /nginx-prøver, samsvarer bare URL-ene med det eksakte prefikset /Nginx-prøvene som samsvarer med stedsblokken. Den forespurte URL-en blir undersøkt av Nginx for “/nginx-spechples?$ ”Mønster. De spesifikke betydningene av karakterene "^", "?”, Og“ $ ”brukes for å definere mønsteret. Strengen som må matches starter med “^”. Strengens ende som skal matches er indikert med "$" -symbolet. Det ikke-grådige modifiseringsskiltet er “?”.

Når en kamp er funnet, slutter en ikke-gråtende modifiserer å lete etter mønstre. Hvis den etterspurte URI samsvarer med mønsteret, “Other Page.html ”erstattes. Omskrivningen avsluttes også fordi omskrivningsbegrensningen ender med en pause. Men den endrede forespørselen blir ikke videresendt til et annet sted.

Implementering av omskrivningsdirektiv for dynamisk side

Vurder nå en dynamisk side der den dynamiske delen er ID = 11: https: // www.Linux.com/linux-bruker.PHP?id = 11 (uid). Hvis du bruker den siste måten å omskrive nettadressene, trenger du 10 omskrivingsdirektiver for hver av dine 10 brukere. I stedet er det mulig å trekke ut URL -komponentene i variabler og bruke disse variablene for å lage en enkelt omskrivingskommando som håndterer alle de dynamiske sidene.

Med plasseringskommandoen “Location = /Linux-User”, blir Nginx instruert om å søke på plasseringsdirektivet med en URL som har prefikset “ /Linux-bruker” i det nøyaktig. Nginx skanner den forespurte URL-en for “Linux-bruker/([0-9]+)/?$ ”Mønster. Utvalget av karakterer i det firkantede braketten vanlige uttrykket “^[0-9]+” er mellom 0 og 9. Et matchende tegn eller tegn er indikert med "+" -symbolet. I mangel av "+" -tegnet, identifiserer det vanlige uttrykket bare de eneste tegnene som 5 eller 8, men ikke 25 eller 44. Det vanlige uttrykkets parenteser () markerer ryggreferansen. Denne ryggreferansen vises av “$ 1” i “Linux-User.PHP?id = $ 1 ”substitusjons url.

Konklusjon

Omskrivnings- eller returdirektivene kan nå brukes til å omskrive nettadressene. Omskrivingseksemplene gitt på dette kurset er enkle å forstå. Som vist i eksemplene, brukes returdirektivet til å informere nettleseren og søkemotorcrawlerne på plasseringen av siden. Mens omskrivingsdirektivet kan brukes til å abstrahere bort URL -omskrivingsoperasjonen uten å gjøre nettleseren oppmerksom på hva som skjer bak kulissene.