Con Redirect 301 si intende la regola per cui un file viene permanentemente spostato vero una nuova locazione.
È il metodo di reindirizzamento permanente corretto per la maggior parte delle pagine e siti web, in quanto avvisa i motori di ricerca che tutto ciò che era contenuto sotto il vecchio URL è ora spostato al nuovo URL.

Sui server Apache la regola di reindirizzamento viene indicata nel file .htaccess o nell’header delle pagine dinamiche.
Nei server IIS è invece possibile reindirizzare tramite ASP o ASP.net, oppure dal proprio hosting provider.

Quali regole inserire nel tuo .htaccess per effettuare un Redirect 301?

Per prima cosa, aggiungi al tuo .htaccess queste due righe

Options +FollowSymLinks
RewriteEngine on

Reindirizzare un URL univoco ad una pagina specifica

Redirect 301 /oldpage/ http://www.sitoweb.com/newpage/

Reindirizzare una directory specifica e tutto il suo contenuto ad un’altra

RedirectMatch 301 ^/olddirectory/ http://www.sitoweb.com/nuovadirecotry/

Reindirizzare un dominio ad un altro

RewriteBase /
RewriteRule (.*) http://www.sitoweb.com/$1 [R=301,L]

Reindirizzare un dominio ad un altro, mantenendo l’URL path

RewriteCond %{HTTP_HOST} ^vecchiositoweb\.com$ [NC]
RewriteRule ^(.*)$ http://www.nuovositoweb.com/$1 [R=301,L]

Reindirizzare un’estensione di file ad un’altra, mantenendo il nome

RedirectMatch 301 ^(.*)$ http://www.sitoweb.com

Da not-www to www

RewriteCond %{HTTP_HOST} ^sitoweb.com [NC]
RewriteRule ^(.*)$ http://www.sitoweb.com/$1 [L,R=301]

Da HTTP a HTTPS

RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

Eliminare index.php o index.xml e reindirizzare alla root

RewriteCond %{THE_REQUEST} /index.php HTTP [NC]
RewriteRule (.*)index.php$ /$1 [R=301,L]
RewriteCond %{THE_REQUEST} /index.html HTTP [NC]
RewriteRule (.*)index.html$ /$1 [R=301,L]