Introduzione
Il reindirizzamento HTTP è un modo per puntare un dominio o un indirizzo verso un altro. Ci sono alcuni tipi diversi di reindirizzamenti, ognuno dei quali significa qualcosa di diverso per il browser client. I due tipi più comuni sono i reindirizzamenti temporanei e quelli permanenti.
I reindirizzamenti temporanei (codice di stato di risposta 302 Trovato) sono utili se un URL ha bisogno temporaneamente di essere servito da una posizione diversa. Ad esempio, se stai effettuando la manutenzione del sito, potresti desiderare di utilizzare un reindirizzamento temporaneo dal tuo dominio a una pagina di spiegazione per informare i tuoi visitatori che tornerai presto.
I reindirizzamenti permanenti (codice di stato di risposta 301 Spostato definitivamente), d’altra parte, informano il browser che dovrebbe dimenticare completamente il vecchio indirizzo e non tentare più di accedervi. Questi sono utili quando i tuoi contenuti sono stati spostati definitivamente in una nuova posizione, come quando cambi nome di dominio.
Questa guida coprirà una spiegazione più dettagliata su come implementare ogni tipo di reindirizzamento in Nginx e passerà attraverso alcuni esempi per casi d’uso specifici.
Prerequisiti
Per seguire questo tutorial, avrai bisogno:
- A server with Nginx installed and set up to serve your website(s). You can find some examples and instructions on the tutorials for Ubuntu 22.04, Debian, or CentOS.
Soluzione in breve
In Nginx, è possibile realizzare la maggior parte dei reindirizzamenti con la direttiva integrata rewrite
. Questa direttiva è disponibile per impostazione predefinita in un’installazione fresca di Nginx e può essere utilizzata per creare reindirizzamenti temporanei e permanenti. Nella sua forma più semplice, richiede almeno due argomenti: il vecchio URL e il nuovo URL.
È possibile implementare un reindirizzamento temporaneo con le seguenti righe nella configurazione del server:
Questo reindirizzamento istruisce il browser a indirizzare tutte le richieste per www.domain1.com
a www.domain2.com
. Tuttavia, questa soluzione funziona solo per una singola pagina, non per l’intero sito. Per reindirizzare più di una singola pagina, è possibile utilizzare la direttiva rewrite
con le espressioni regolari per specificare intere directory invece che singoli file.
redirect
corrisponde a modelli di espressioni regolari tra parentesi. Quindi fa riferimento al testo corrispondente nella destinazione del reindirizzamento utilizzando l’espressione $1
, dove 1
è il primo gruppo di testo corrispondente. In esempi più complessi, i gruppi corrispondenti successivi vengono numerati sequenzialmente.
Ad esempio, se volessi reindirizzare temporaneamente ogni pagina all’interno di www.domain1.com
a www.domain2.com
, potresti utilizzare quanto segue:
Per impostazione predefinita, la direttiva rewrite
stabilisce un reindirizzamento temporaneo. Se desideri creare un reindirizzamento permanente, puoi farlo sostituendo redirect
con permanent
alla fine della direttiva, così:
Passiamo ora ad alcuni esempi specifici.
Esempio 1 — Passaggio a un Dominio Diverso
Se hai stabilito una presenza web e desideri cambiare il tuo dominio con un nuovo indirizzo, è meglio non abbandonare semplicemente il vecchio dominio. I segnalibri al tuo sito e i link al tuo sito presenti su altre pagine in tutto internet si interromperanno se il tuo contenuto scompare senza istruzioni al browser su come trovare la sua nuova posizione. Cambiare dominio senza reindirizzamento farà perdere traffico al tuo sito dai visitatori precedenti e dai vecchi link.
In questo esempio, configureremo un reindirizzamento dal vecchio dominio chiamato domain1.com
al nuovo chiamato domain2.com
. Utilizzeremo reindirizzamenti permanenti qui perché il vecchio dominio sarà deprecato, e tutto il traffico dovrebbe andare al nuovo dominio da ora in poi.
Supponiamo che tu abbia configurato il tuo sito web per essere servito da un singolo dominio chiamato domain1.com
già configurato in Nginx come segue:
Supporremo inoltre che stai già servendo la tua futura versione del sito web su domain2.com
:
Modifichiamo il file di configurazione del blocco del server di domain1.com
per aggiungere un reindirizzamento permanente a domain2.com
:
Abbiamo aggiunto il suddetto reindirizzamento utilizzando una direttiva rewrite
. L’espressione regolare ^/(.*)$
corrisponde a tutto ciò che segue il /
nell’URL. Ad esempio, http://domain1.com/index.html
verrà reindirizzato a http://domain2.com/index.html
. Per ottenere il reindirizzamento permanente, aggiungiamo semplicemente permanent
dopo la direttiva rewrite
.
Nota: Ricorda di testare la tua configurazione usando nginx -t
e quindi riavviare Nginx dopo aver apportato le modifiche.
Esempio 2 — Creazione di un’esperienza persistente nonostante i cambiamenti dei nomi delle singole pagine
A volte è necessario modificare i nomi delle singole pagine che sono già state pubblicate e hanno ricevuto traffico sul tuo sito. Cambiare solo il nome causerebbe un errore 404 Not Found per i visitatori che cercano di accedere all’URL originale, ma puoi evitarlo utilizzando un reindirizzamento. Questo assicura che le persone che hanno segnato le tue vecchie pagine o le hanno trovate tramite link obsoleti sui motori di ricerca raggiungeranno comunque la pagina corretta.
Supponiamo che il tuo sito web avesse due pagine separate per prodotti e servizi chiamate products.html
e services.html
rispettivamente. Ora hai deciso di sostituire quelle due pagine con una singola pagina offerta chiamata offers.html
. Configureremo un semplice reindirizzamento per products.html
e services.html
verso offers.html
.
Assumiamo che il tuo sito web sia configurato come segue:
Configurare i reindirizzamenti è semplice come utilizzare due direttive di reindirizzamento.
La direttiva rewrite
accetta l’indirizzo originale che deve essere reindirizzato così come l’indirizzo di destinazione di una nuova pagina. Poiché il cambiamento qui non è temporaneo, abbiamo utilizzato anche permanent
nella direttiva. Puoi utilizzare tanti reindirizzamenti come desideri per assicurarti che i tuoi visitatori non vedano errori 404 Not Found non necessari durante lo spostamento dei contenuti del sito.
Conclusione
Ora hai le conoscenze per reindirizzare le richieste verso nuove posizioni. Assicurati di utilizzare il tipo di reindirizzamento corretto, poiché un uso improprio di reindirizzamenti temporanei può danneggiare il tuo ranking nelle ricerche.
Ci sono molteplici altri utilizzi dei reindirizzamenti HTTP, inclusi il forzare connessioni SSL sicure (cioè utilizzando https
invece di http
) e assicurarsi che tutti i visitatori finiscano solo sull’indirizzo del sito web prefissato con www.
.
Utilizzare i reindirizzamenti correttamente ti permetterà di sfruttare la tua attuale presenza sul web, consentendoti di modificare la struttura del sito secondo necessità. Se desideri approfondire i modi per reindirizzare i tuoi visitatori, Nginx ha ottima documentazione sull’argomento nelle sezioni del modulo rewrite della documentazione ufficiale e nella pubblicazione ufficiale del blog su come creare reindirizzamenti.