Redirect domini www in non-www e viceversa in Nginx

Tue 25 October 2022

Nginx è uno dei più popolari web server presenti in rete. La sua popolarità è dovuta ad un modello event driven che lo ha reso molto performante rispetto ad altri server sul mercato.

Un dominio di secondo livello, ad esempio miosito.it, può gestire infiniti domini di terzo livello, www per www.miosito.it, media per media.miosito.it, e così via. Tutti questi domini di terzo livello possono essere gestiti utilizzando Nginx.

Negli ultimi anni, soprattutto per avere URL non troppo lunghe, sempre più siti gestiscono come dominio di terzo livello un dominio non-www. Quindi per il dominio di secondo livello miosito.it, il dominio di terzo livello risponde proprio alla URL miosito.it.

Devi considerare tuttavia che non è una buona pratica, soprattutto in ottica SEO, mantenere attivi sia il sottodominio www che non-www. I bot di indicizzazione dei motori di ricerca vedono infatti i due sottodomini come separati e quindi eseguono diverse indicizzazioni, penalizzando il nostro sito.

Per ovviare a tale problema, occorre stabilire quale dei due sottodomini utilizzare, ed una volta eseguita la scelta istruire Nginx per eseguire redirect da un sottodominio all'altro. Attraverso i redirect Nginx manterrai attivo uno solo dei due sottodomini, migliorando nel complesso l'efficienza del sito.

Redirect sottodominio www a non-www

Per eseguire il redirect dal sottodominio www al non-www, inserire nel vhost, relativo al proprio sito, le seguenti righe:

server {
    listen 80;
    server_name www.miosito.it;
    return 301 http://miosito.it$request_uri;
}
server {
    listen 80;
    root PROJECT_BASE_DIR;
    index index.html;
    server_name miosito.it;
}

Nella precedente specifica, sostituire PROJECT_BASE_DIR con il path assoluto alla cartella contenente il progetto, e miosito.it con il nome del tuo dominio.

Per verificare la corretta configurazione del server eseguire:

curl -vv www.miosito.it
curl -vv miosito.it

Noterai che nella prima chiamata avrai un redirect mentre la seconda chiamata restituisce il risultato atteso.

Redirect sottodominio non-www a www

Per eseguire il redirect dal sottodominio non-www al www, inserire nel vhost, relativo al proprio sito, le seguenti righe:

server {
    listen 80;
    server_name miosito.it;
    return 301 http://www.miosito.it$request_uri;
}
server {
    listen 80;
    root PROJECT_BASE_DIR;
    index index.html;
    server_name www.miosito.it;
}

Nella precedente specifica, sostituire PROJECT_BASE_DIR con il path assoluto alla cartella contenente il progetto, e miosito.it con il nome del tuo dominio.

Per verificare la corretta configurazione del server eseguire:

curl -vv miosito.it
curl -vv www.miosito.it

Noterai che nella prima chiamata avrai un redirect mentre la seconda chiamata restituisce il risultato atteso.

Conclusioni

Nginx può essere configurato per eseguire redirect tra sottodomini.

In questo articolo abbiamo visto come eseguire redirect tra un sottodominio www ed uno non-www e viceversa.