HTTP 301 - HTTP 301

Il codice di stato della risposta HTTP 301 Moved Permanently viene utilizzato per il reindirizzamento permanente, il che significa che i collegamenti oi record correnti che utilizzano l'URL per cui viene ricevuta questa risposta devono essere aggiornati. Il nuovo URL deve essere fornito nel campo Posizione incluso nella risposta. Il reindirizzamento 301 è considerato una best practice per l'aggiornamento degli utenti da HTTP a HTTPS.

RFC 2616 afferma che:

  • Se un client dispone di funzionalità di modifica dei collegamenti, dovrebbe aggiornare tutti i riferimenti all'URL della richiesta.
  • La risposta è memorizzabile nella cache se non diversamente indicato.
  • A meno che il metodo di richiesta non fosse HEAD, l'entità dovrebbe contenere una piccola nota ipertestuale con un collegamento ipertestuale ai nuovi URL.
  • Se il codice di stato 301 viene ricevuto in risposta a una richiesta di qualsiasi tipo diverso da GET o HEAD, il client deve chiedere all'utente prima di reindirizzare.

Esempio

Richiesta del cliente:

GET /index.php HTTP/1.1
Host: www.example.org

Risposta del server:

HTTP/1.1 301 Moved Permanently
Location: https://www.example.org/index.asp

Di seguito è riportato un esempio che utilizza un file .htaccess per reindirizzare un URL non protetto a un indirizzo protetto senza il "www" iniziale:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [R,L]

Ecco un esempio che utilizza Perl CGI.pm :

print redirect("https://example.com/newpage.html");

Ecco un esempio che utilizza un reindirizzamento PHP :

<?php
header("Location: https://example.com/newpage.html", true, 301);
exit;

Altrettanto semplice per una configurazione nginx :

location /old/url/ {
    return 301 /new/url/;
}

Ecco un modo per reindirizzare utilizzando Express.js :

app.all("/old/url", (req, res) => {
    res.redirect(301, "/new/url");
});

Motori di ricerca

Sia Bing che Google consigliano di utilizzare un reindirizzamento 301 per modificare l'URL di una pagina come viene mostrato nei risultati del motore di ricerca, a condizione che l'URL cambierà in modo permanente e non dovrà essere modificato di nuovo a breve.

Guarda anche

Riferimenti

Bibliografia

301 HTTPS