
Indice
In questa breve guida di mostro la regola da inserire nel virtual host di Nginx per redirezionare il traffico da dominio senza www al dominio www, sia sotto protocollo HTTP che HTTPS. Dato che il www è molto diffuso, questa regola dovrebbe essere ben conosciuta.
Quando si configura Nginx per ospitare un nuovo sito web, una cosa da sapere è il dominio preferito, quello che poi va anche definito in Google Search Console.
Scegliere un dominio preferito e redirezionare il traffico della controparte serve ad ottimizzare il crawl budget dei motori di ricerca e, in mancanza di canonical tag, anche l’indicizzazione. Questa regola infatti evita che vengano indicizzati URL con contenuti duplicati su URL con e senza www.
Un web server con dominio preferito che utilizza il www, deve gestire anche il traffico verso URL senza www, in altre parole se il sito è www.evemilano.com ed interrogo evemilano.com, il web server deve redirezionare il traffico verso www.evemilano.com.
Per impostare la regola di redirect 301 da dominio non www verso dominio con www puoi impostare due blocchi server in questo modo:
#blocco di redirect
server {
listen 80;
listen [::]:80;
server_name evemilano.com;
rewrite ^(.*) http://www.evemilano.com$1 permanent;
}
#blocco default
server {
listen 80;
listen [::]:80;
server_name www.evemilano.com;
...
}
Il blocco usa tre semplici comandi:
- listen: il server è in ascolto sulla porta 80. Se il tuo sito usa il protocollo HTTPS userà la porta 443.
- server_name: il dominio a cui applicare la regola che segue, in questo caso senza www.
- rewrite: regola di redirect 301 con dominio di destinazione.
Questo blog usa il protocollo HTTPS, quindi nel mio caso uso questa regola:
#blocco di redirect HTTP
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name www.evemilano.com evemilano.com;
return 301 https://www.evemilano.com$request_uri;
}
#blocco di redirect IP
server {
listen 80;
server_name 82.196.0.237;
return 301 $scheme://www.evemilano.com$request_uri;
}
#blocco default HTTPS
server {
# Gestione SSL
listen 443 ssl;
...
}
Come avrai notato ho creato il primo blocco unico per www e non www, che redireziona ad HTTPS con www. Inoltre ho inserito il secondo blocco per redirezione l’IP verso il dominio preferito, non si sa mai. Infine trovi il blocco default, in ascolto sulla porta 443 per il protocollo HTTPS.
FAQ
Come si effettua un redirect 301 su Nginx?
Risposta: Per effettuare un redirect 301 su Nginx, è necessario modificare il file di configurazione del server. Aggiungi una riga con il comando return 301 seguito dall’URL di destinazione. Ecco un esempio:
server {
...
location /vecchio-percorso {
return 301 http://tuodominio.com/nuovo-percorso;
}
...
}
Qual è la differenza tra “redirect” e “permanent” su Nginx?
Risposta: In Nginx, “redirect” è utilizzato per un reindirizzamento 302, che è temporaneo, mentre “permanent” indica un reindirizzamento 301, che è permanente. Il reindirizzamento permanente è generalmente preferito per SEO, poiché trasferisce il “link juice” alla nuova pagina.
Come si reindirizza Nginx verso HTTPS?
Risposta: Per reindirizzare Nginx verso HTTPS, è necessario aggiungere una regola nel blocco server che reindirizza tutte le richieste HTTP verso HTTPS. Ecco un esempio:
server {
listen 80;
server_name tuodominio.com;
return 301 https://$host$request_uri;
}
Cosa significa “$2” in una regola di rewrite?
Risposta: In una regola di rewrite su Nginx, “$2” rappresenta il secondo gruppo di caratteri catturato in una espressione regolare. Per esempio, nella regola rewrite ^(/user)/(\d+) /$1?id=$2, “$2” rappresenterebbe il numero catturato (\d+).
Come si effettua un redirect HTTP 301?
Risposta: Un redirect HTTP 301 può essere implementato in Nginx utilizzando il comando return 301 seguito dall’URL di destinazione nel blocco server del file di configurazione. Questo indica un trasferimento permanente a una nuova URL.
Come si effettua un redirect 302?
Risposta: Un redirect 302 può essere implementato in Nginx utilizzando il comando return 302 seguito dall’URL di destinazione nel blocco server del file di configurazione. Questo indica un trasferimento temporaneo a una nuova URL.
Qual è la differenza tra un redirect 301 e un redirect 302?
Risposta: La principale differenza è che un redirect 301 è permanente e trasferisce il valore SEO alla nuova URL, mentre un redirect 302 è temporaneo e non trasferisce il valore SEO. Il redirect 302 è utilizzato quando si prevede di tornare alla URL originale in futuro.
Come si effettua un reindirizzamento permanente di un URL?
Risposta: Per effettuare un reindirizzamento permanente di un URL su Nginx, utilizza il comando return 301 seguito dall’URL di destinazione nel blocco server del file di configurazione. Questo indica ai motori di ricerca che la pagina è stata spostata definitivamente.
Qual è la differenza tra un redirect 301 e un redirect 308 su Nginx?
Risposta: Mentre entrambi sono reindirizzamenti permanenti, la differenza principale è che un redirect 308 non permette il cambio di metodo HTTP (da POST a GET), mantenendo il metodo originale nella richiesta successiva, mentre un redirect 301 può cambiare il metodo da POST a GET.
Come si cambia da HTTP 1.1 a HTTP 2 su Nginx?
Risposta: Per abilitare HTTP/2 su Nginx, è necessario aggiungere il parametro http2 alla direttiva listen nel file di configurazione del server. Ecco un esempio:
server {
listen 443 ssl http2;
...
}
Per dubbi o domande lascia un commento.
Lascia un commento