Riscrittura dell'URL

Riscrittura dell'URL
L'URL che richiede un client può essere modificato completamente o in breve utilizzando le regole di riscrittura NGINX. Oltre a dirigere il flusso delle pagine di esecuzione di Nginx, l'obiettivo principale di aggiornare un URL è avvisare i clienti che i servizi che stanno cercando si sono mossi. Gli URL vengono riscritti usando i comandi di ritorno e riscrivere in nginx. Lo stesso compito di riscrivere gli URL è svolto da entrambe le direttive. La direttiva di riscrittura è più forte della direttiva di ritorno, in quanto può gestire una complicata riscrittura senza la necessità di analizzare gli URL. Esamineremo in questa guida su come NGINX utilizza i comandi di ritorno e riscrivere per modificare o riscrivere l'URL.

Si consiglia vivamente di aggiornare l'attuale istanza NGINX alla versione superiore perché questa istruzione è ottimizzata per NGINX versione 1.0.1 e sopra. Tuttavia, alcune operazioni e sintassi potrebbero ancora applicarsi alle versioni prima di quella menzionata.

Direttiva di ritorno in Ubuntu 20.04

Il comando di ritorno fondamentale e ben compreso viene utilizzato per realizzare la riscrittura dell'URL. Sebbene non impiega le espressioni regolari, può analizzare le variabili prese dal percorso del blocco di posizione. In genere, la direttiva di ritorno viene utilizzata per reindirizzare l'URL di richiesta in un posto diverso. Di conseguenza, impiega spesso i codici di stato HTTP come 301 per il reindirizzamento continuo e 302 per il reindirizzamento temporaneo. Gli esempi dei casi d'uso della direttiva di ritorno sono mostrati nei seguenti frammenti di codice:

Implementazione della direttiva di reso nell'impostazione del server

Quando si sposta il tuo sito Web in un nuovo dominio e reindirizza tutti i vecchi URL nel nuovo dominio, la direttiva di ritorno nell'ambiente del server è abbastanza utile. Rendere il tuo sito per reindirizzare alla versione "www" o alla versione "non-ww" aiuta anche a canonicalizzare l'URL.

La direttiva di ritorno nel contesto del server precedente modifica l'URL destinato al WWW.Urlinux.com sito che è il vecchio dominio del www.Urlinux.com sito che è il nuovo dominio. Quando Nginx vede un URL che contiene il www.Urlinux.com Sito, blocca immediatamente l'elaborazione della pagina e fornisce al client un codice 301-response e ricutra l'URL. IL $ schema E $ richiesta Uri sono le due variabili che vengono utilizzate nella direttiva di ritorno. IL $ richiesta L'URI variabile include l'intero URI con qualsiasi parametro. E il $ schema La variabile viene utilizzata per definire lo schema URL (HTTP o HTTPS). Quando si riscrive l'URL, tieni presente che entrambe le variabili recuperano queste informazioni dall'URL di input.

Implementazione della direttiva di reso nell'impostazione della posizione

In alcune circostanze, inoltrare le pagine è preferibile nel trattare con i domini. È possibile reindirizzare le pagine in una posizione diversa utilizzando la direttiva di ritorno trovata all'interno del blocco di posizione.

Quando un URL di richiesta corrisponde esattamente al modello /articoli /campioni-nginx nell'esempio, NGINX reindirizza la richiesta al nuovo https: // linux.com/nginx/context-nginx/ indirizzo. Puoi anche cambiare la posizione di tutto per un certo percorso. L'esempio seguente dimostra come reindirizzare qualsiasi pagine contrassegnate come "/campioni" a https: // linux.com/lingue.

Riscrivi la direttiva in Ubuntu 20.04

La capacità interna del Web Server di riscrivere gli URL senza divulgare il metodo principale alla macchina client viene realizzata tramite la direttiva di riscrittura. Usa le espressioni regolari e si conformano alla sua sintassi. Il segnaposto sostitutivo sostituisce l'URL abbinato. Il segnaposto Regex consente di utilizzare le espressioni regolari. E il flag consente di modificare il flusso di esecuzione. Le bandiere si interrompe, permanenti, reindirizzate e ultimo sono attualmente utilizzate nelle direttive di riscrittura.

I dettagli della sintassi sono indicati nel seguente:

  • Regex: l'espressione regolare creata utilizzando il PCRE che viene applicato all'URL delle richieste in arrivo.
  • Sostituzione-URL: se l'URL richiesto corrisponde all'espressione regolare, l'URL richiesto viene modificato utilizzando la stringa di sostituzione.
  • Flag: se il comando di riscrittura deve essere elaborato dipende ulteriormente dal valore del flag.

Si noti che solo i codici 301 o 302 possono essere restituiti dalla direttiva di riscrittura. Dopo la direttiva di riscrittura, una direttiva di ritorno deve essere inclusa esplicitamente se si desidera restituire codici extra.

Implementazione della direttiva di riscrittura per la pagina statica

Prendi il caso in cui si desidera modificare l'URL di una pagina, come https: // linux.com/nginx-campioni su https: // linux.com/altrapage.html. Nel seguente blocco di posizione, viene fornita una direttiva di riscrittura per svolgere lo stesso compito.

Secondo la posizione del comando di posizione = /nginx-campioni, solo gli URL con il prefisso esatto /nginx-campioni corrispondono al blocco di posizione. L'URL richiedente è esaminato da NGINX per i campioni “/nginx?Pattern $ ". I significati specifici dei personaggi "^", "?", E" $ "sono impiegati per definire il modello. La stringa che deve essere abbinata inizia con "^". La fine della stringa da abbinare è indicata dal simbolo "$". Il segno del modificatore non ferito è "?".

Una volta trovata una partita, un modificatore non generoso smette di cercare motivi. Se l'URI richiesto corrisponde al modello, la "altra pagina.HTML ”è sostituito. La riscrittura termina anche perché il vincolo di riscrittura termina con una pausa. Ma la richiesta modificata non viene inoltrata in una posizione diversa.

Implementazione della direttiva di riscrittura per la pagina dinamica

Ora, considera una pagina dinamica in cui la parte dinamica è ID = 11: https: // www.Linux.com/linux-uker.PHP?id = 11 (uid). Se usi il modo più recente di riscrivere gli URL, è necessario 10 direttive di riscrittura per ciascuno dei 10 utenti. Invece, è possibile estrarre i componenti URL in variabili e utilizzare quelle variabili per creare un singolo comando di riscrittura che gestisce tutte le pagine dinamiche.

Con il comando di posizione “Posizione = /USER LINUX”, NGINX è incaricato di cercare la direttiva di posizione con un URL che ha il prefisso “ /utente Linux” esattamente. Nginx scansiona l'URL richiesto per "Linux-User/([0-9]+)/?Pattern $ ". L'intervallo di caratteri nell'espressione regolare a trazione quadrata “^[0-9]+” è tra 0 e 9. Un carattere o caratteri corrispondenti sono indicati dal simbolo "+". In assenza del segno "+", l'espressione regolare identifica solo i singoli caratteri come 5 o 8, ma non 25 o 44. Le parentesi () dell'espressione regolare segna il reference posteriore. Questa reference è mostrata da "$ 1" nell'utente "Linux.PHP?id = $ 1 "URL di sostituzione.

Conclusione

Le direttive di riscrittura o restituzione possono ora essere utilizzate per riscrivere gli URL. Gli esempi di riscrittura indicati in questo corso sono semplici da comprendere. Come mostrato negli esempi, la direttiva di ritorno viene utilizzata per informare il browser e i crawler del motore di ricerca della posizione della pagina. Mentre la direttiva di riscrittura può essere utilizzata per astrarre l'operazione di riscrittura dell'URL senza rendere il browser consapevole di ciò che sta accadendo dietro le quinte.