• cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO A WEBAREA? CLICCA QUI E REGISTRATI !

Redirect 301 tramite htaccess in Apache Web Server

di :: 19 aprile 2018

redirect 301 htaccess

Capita di dover modificare la URL di una o più pagine web del nostro sito, ad esempio per renderle "parlanti" e rispondenti ai contenuti della pagina (ad esempio, da www.miosito.it/?pagina1 a www.miosito.it/ecommerce) o perchè il dominio stesso è cambiato (ad esempio, da .it a .com).

In questi casi si fa ricorso alla tecnica del Redirect 301 tramite una direttiva inserita nel file .htaccess localizzato nella root del sito.

Esistono vari tipo di redirect ma si privilegia questo in quanto il "valore" (juice) della pagina "vecchia" viene trasferito sulla pagina "nuova". Se non sei un esperto SEO questo significa che la pagina con la nuova url non perderà la sua posizione nelle SERP di Google!

Il redirect 301 è una richiesta di modifica permanente e serve, come detto, ad indicare ai motori di ricerca che una o più pagine, o addirittura un intero sito web, è stato spostato da un indirizzo (URL) ad un altro.

La richiesta di spostamento temporanea è invece denominata 302.

Aprite un editor, create un file con nome .htaccess e mettiamoci al lavoro: vedremo in rassegna alcuni esempio di come utilizzare il file htaccess per effettuare un redirect 301.

Il file .htaccess andrà salvato nella root del vostro sito web.

In molti esempi che vedremo, affinche l'istruzione contenuta in htaccess funzioni, è necessario che sul web server Apache sia presente del modulo "mod_rewrite". Se acquisti uno spazio web in un hosting condiviso è sicuramente già installato, se invece gestisci un server verifica che sia presente. Quando utilizziamo il modulo rewrite, l'istruzione contenuta nel file .htaccess presenta la riga "RewriteEngine on", ed indica che verrà usato il modulo rewrite.

Redirect 301 dell'intero sito

RewriteEngine on
RewriteBase /
RewriteRule (.*) http://www.nuovodominio.it/$1 [R=301,L]

Inserendo nel file .htaccess queste righe, tutte le richieste dell'intero sito web saranno reindirizzate verso il nuovo dominio.

Possiamo anche scriverlo in questo modo: tutto il traffico che NON arriva al nuovo dominio lo rendirizziamo sul nuovo dominio

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.nuovodominio\.it
RewriteRule (.*) http://www.nuovodominio.it/$1 [R=301,L]

Un ulteriore modo è questo, e non utilizza il rewrite

Redirect 301 / http://www.nuovodominio.it/

Redirect 301 di una singola URL sullo stesso dominio

Redirect 301 /pagina-1.html /ecommerce.html

In questo modo tutte le richieste alla pagina "pagina-1.html" verranno redirette sulla pagina "ecommerce.html" dello stesso dominio

Redirect 301 di una singola URL su un dominio differente

Redirect 301 /pagina-1.html http://www.nuovodominio.it/ecommerce.html

In questo modo tutte le richieste alla pagina "pagina-1.html" verranno redirette sulla pagina "ecommerce.html" del nuovo dominio

Redirect 301 da non www verso www

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.miosito\.it$
RewriteRule ^(.*)$ http://www.miosito.it/$1 [R=301,L]

Tutte le richieste ricevute senza il www (si utilizza il punto esclamativo per negare una condizione) verranno reindirizzate al www.miosito.it indicando ai motori di ricerca che questo è il dominio principale (o canonico).

Redirect 301 da www verso non www

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^miosito\.it$ [NC]
RewriteRule ^(.*)$ http://miosito.it/$1 [R=301,L]

Tutte le richieste ricevute saranno reindirizzate al dominio senza il www, e cioè miosito.it, indicando ai motori di ricerca che questo è il dominio principale (o canonico).

Redirect 301 da http verso non https

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.miosito.it/$1 [R=301,L]

Redirect 301 da https verso non http

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

Redirect 301 per files con una certa estensione

Se ad esempio vogliamo redirigere tutto il traffico indirizzato a files con estensione .php a files con estensione .html, usiamo questo codice

RewriteEngine On
RewriteCond %{REQUEST_URI} .php$
RewriteRule ^(.*).php$ /$1.html [R=301,L]

Oppure potremmo scriverlo così, specificando il nuovo dominio

RewriteEngine On
RewriteCond %{REQUEST_URI} .php$
RewriteRule ^(.*).php$ http://www.miosito.it/$1.html [R=301,L]

Un metodo alternativo è questo

RedirectMatch 301 (.*)\.php$ http://www.miosito.it$1.html

Redirect 301 da un vecchio dominio a un nuovo dominio comprensivo di query string

Se la vecchia url presenta, appesi, dei parametri, ad esempio www.miosito.it/?par1=1234&par2=5678 (si chiama query string) e vogliamo spostare il traffico su un nuovo dominio portando assieme la query string, usiamo questo codice

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*) http://www.nuovodominio.it%{REQUEST_URI} [R=301,NC]

Con questo codice andiamo ad elimnare la pagina index.php restituendo una url senza index.php

Redirect 301 per eliminare index.php dall’URL

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)index\.php$ /$1 [R=301,NC]

Con questo codice andiamo ad elimnare la pagina index.php restituendo una url senza index.php

Redirect 301 realizzato in PHP

Lo stesso effetto del redirect ottenuto tramite il file .htaccess si può ottenere in PHP inserendo nella pagina "vecchia" semplicemente questo codice, con l'indicazione della url della "nuova" pagina

<?php
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://www.newurl.com");
?>
x

ATTENZIONE