Redirect HTTP in Nginx
Una guida completa alla configurazione dei reindirizzamenti in Nginx.
I redirect HTTP indicano a browser e crawler dei motori di ricerca di passare da un URL a un altro. Vengono utilizzati in molte situazioni: migrazione a un nuovo dominio, forzatura di HTTPS, pulizia della struttura degli URL, consolidamento di contenuti duplicati e altro ancora. Configurati correttamente, i redirect preservano il posizionamento nei motori di ricerca e impediscono agli utenti di incappare in vicoli ciechi.
Nginx gestisce i redirect tramite il modulo integrato ngx_http_rewrite_module, installato di default.
Come utilizzarlo?
Un VPS o un server dedicato ti dà il pieno controllo sulla configurazione di Nginx — puoi impostare qualsiasi logica di redirect, testarla e affinare rapidamente.
Dove configurare i redirect
I redirect di Nginx si definiscono nei file di configurazione del server:
/etc/nginx/nginx.conf— il file di configurazione principale/etc/nginx/sites-available/site_name— la configurazione per singolo sito/etc/nginx/sites-enabled/— i symlink alle configurazioni attive dasites-available
Apporta le modifiche in sites-available, poi valida sempre la sintassi prima di ricaricare:
nginx -t
Redirect 301 da www a non-www
server {
listen 80;
server_name www.domain.com;
rewrite ^ http://domain.com$request_uri? permanent;
}
server {
listen 80;
server_name domain.com;
...
}
Redirect 301 da non-www a www
server {
listen 80;
server_name domain.com;
rewrite ^ http://www.domain.com$request_uri? permanent;
}
server {
listen 80;
server_name www.domain.com;
...
}
Redirect 301 da HTTPS a HTTP
server {
listen 443;
server_name www.domain.com;
rewrite ^ http://www.domain.com$request_uri? permanent;
}
server {
listen 80;
server_name www.domain.com;
...
}
Redirect 301 da HTTP a HTTPS
Per un nuovo dominio:
server {
listen SERVER_IP:80;
server_name www.domain.com;
rewrite ^ https://www.domain.com$request_uri? permanent;
}
server {
listen SERVER_IP:443 ssl;
server_name www.domain.com;
...
}
Per un dominio esistente:
server {
listen SERVER_IP:80;
server_name www.domain.com;
rewrite ^ https://www.domain.com$request_uri? permanent;
}
Reindirizzare una pagina specifica verso un nuovo URL
server {
...
if ($request_filename ~ oldpage/) {
rewrite ^ http://www.domain.com/newpage/? permanent;
}
...
}
Redirect 301 per un'intera directory
server {
...
if ($request_filename ~ oldfolder/.+) {
rewrite ^(.*) http://www.domain.com/newfolder/$1 permanent;
}
...
}
I nostri prodotti e servizi
Redirect 301 da un dominio a un altro
server {
server_name domain.com www.old-domain.com;
rewrite ^ $scheme://www.new-domain.com;
}
Rimuovere gli slash finali dagli URL
server {
...
rewrite ^/(.*)/$ /$1 permanent;
...
}
location ~ .+/$ {
rewrite (.+)/$ $1 permanent;
}
Redirect dalle pagine con index.php
if ($request_uri ~* "^(.*/)index\.phpquot;) {
return 301 $1;
}
Correggere i doppi slash (//) negli URL
merge_slashes off;
location ~* "//" {
rewrite ^(.*)//(.*)$ $1/$2;
rewrite ^ $uri permanent;
}
Dopo aver apportato qualsiasi modifica, riavvia Nginx per applicarle:
service nginx restart
Aiuto
Hai domande o ti serve una mano? Scrivici tramite il sistema di ticket — siamo sempre qui per aiutarti!