HTTP 301 spostato in modo permanente (o reindirizzamento 301 ) è un codice di risposta HTTP utilizzato per il reindirizzamento URL permanente, ovvero per indicare che i collegamenti oi record correnti che utilizzano l' URL per il quale è stato ricevuto devono essere modificati. Il nuovo URL deve essere fornito nel campo "Posizione" incluso nella risposta. Il codice di reindirizzamento 301 è considerato il modo migliore per aggiornare gli utenti da HTTP a HTTPS .
La RFC 2616 definisce che:
Richiesta del cliente:
GET /index.php HTTP/1.1 Host: www.example.orgRisposta del server:
HTTP/1.1 301 Moved Permanently Location: http://www.example.org/index.aspDi seguito è riportato un esempio che utilizza file .htaccess per reindirizzare un URL non protetto a un indirizzo protetto senza "www":
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 un reindirizzamento PHP
<?php header("HTTP/1.1 301 Moved Permanently"); header("Location: https://example.com/newpage.html"); exit(); ?>Ecco un esempio di semplicità equivalente per una configurazione nginx :
location /old/url/ { return 301 /new/url; }Bing e i motori di ricerca Google consigliano il reindirizzamento 301 per modificare l'URL di una pagina.