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 da sites-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

Hosting WebServizi di hosting affidabili per siti web di qualsiasi dimensione.
Ordina
VPSInfrastruttura cloud flessibile con accesso root completo.
Ordina
Server DedicatiServer dedicati per le massime prestazioni.
Ordina

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!

Hai bisogno di aiuto?I nostri ingegneri ti aiuteranno gratuitamente con qualsiasi domanda in pochi minutiContattaci