Inoltro del dominio tramite .htaccess, PHP, HTML e JavaScript

Nei grandi progetti web, gli inoltri di dominio (redirects) ricoprono un ruolo importante. La possibilità di deviare il traffico di un sito su un altro, aiuta i gestori a canalizzare il flusso di visitatori e ad apportare modifiche alla pagina. In più tramite gli inoltri potete rendere disponibile lo stesso contenuto su domini diversi senza che venga considerato come Duplicate Content. L’inoltro del dominio è quindi uno strumento efficiente per la gestione dell’indice nell’ottimizzazione per i motori di ricerca. Per il funzionamento del sito ci sono diverse opzioni tra cui scegliere per reindirizzare un dominio o un sottodominio ad un’altra sezione del sito o ad un indirizzo esterno. Tra i metodi di inoltro più comuni ci sono quelli tramite .htaccess, script PHP, meta tag HTML e JavaScript.

Inoltro del dominio per un sito

I redirect servono essenzialmente a comunicare al server che i contenuti di un sito sono stati trasferiti da un URL ad un altro. Ciò è soprattutto fondamentale nel caso in cui l’indirizzo web originario sia la destinazione di un link in entrata, sia stato salvato come segnalibro sul computer di un visitatore o si collochi già tra le prime posizioni nei motori di ricerca. In questo caso l’inoltro comunica al browser o al web crawler che il contenuto ricercato è stato spostato e rimanda al nuovo indirizzo. Altrimenti i visitatori visualizzerebbero solamente una pagina di errore 404 al posto della pagina richiesta. Soprattutto nel caso di progetti commerciali andrebbe evitato. Specialmente i negozi online offrono un crescente assortimento di prodotti che si riflette in un gran numero di pagine web. Qualora un articolo non fosse più disponibile, i potenziali clienti vengono semplicemente reindirizzati su una pagina con prodotti simili. In questo modo si canalizzano i flussi di visitatori in maniera efficiente e si riducono gli abbandoni. In più un inoltro del dominio permette di rendere accessibile lo stesso contenuto da diversi indirizzi. Tutti gli indirizzi alternativi vengono semplicemente reindirizzati al dominio principale scelto.

Tipi di inoltro del dominio

Si distingue essenzialmente tra inoltri lato server e lato client. Mentre negli inoltri di dominio lato server viene trasmesso allo user agent (browser o web crawler) il corrispondente codice di stato HTTP, gli inoltri lato client avvengono senza ricevere una simile risposta e non sono per questo supportati da tutti gli user agent. In alcuni casi i visitatori rimangono così sulla pagina originaria aperta e non vengono reindirizzati alla nuova destinazione. La realizzazione lato server è per questo generalmente preferita. Le soluzioni lato client vengono usate solo nel caso in cui non si possa applicare un inoltro del dominio lato server a causa di limitazioni tecniche.

Inoltro lato server

Nella maggior parte dei casi l’inoltro del dominio lato server avviene tramite il file di configurazione .htaccess o attraverso uno script PHP. Il vantaggio di questi metodi è che si può stabilire in modo personale quali codici di stato HTTP devono essere trasmessi allo user agent. Ciò consente ai gestori dei siti di indicare gli inoltri del dominio come permanenti o temporanei. In questo contesto sono rilevanti soprattutto i codici di stato 301 e 302:

  • 301 - Moved Permanently: la risorsa richiesta dallo user agent è disponibile permanentemente all’URL scelto per il reindirizzamento. L’URL precedente è d’ora in avanti non più valido.
  • 302 - Moved Temporarily: la risorsa richiesta dallo user agent è temporaneamente raggiungibile all’URL scelto per il reindirizzamento. Al contrario del codice 301, l’URL originario rimane valido malgrado l’inoltro.

Se il codice di stato HTTP non viene definito esplicitamente, un server web trasmette di default nel caso di un inoltro lato server il codice di stato 302. Non sempre è però voluto. Si consiglia perciò di inserire manualmente per ogni inoltro il codice di stato desiderato per evitare problemi di indicizzazione come l’hijacking. Al contrario dell’inoltro 301, il codice di stato 302 comunica al web crawler che l’URL originario deve rimanere indicizzato. Qualora l’indirizzo di inoltro funzioni a lungo, l’indirizzo inoltrato concorre con la destinazione di inoltro nell’indice dei motori di ricerca.

Consiglio SEO

Usando i reindirizzamenti si garantisce che i link in entrata siano reindirizzati correttamente, si cerca così di far mantenere al sito la sua posizione tra i risultati di ricerca e si previene una diminuzione del traffico.

Reindirizzamento tramite .htaccess

L‘.htaccess è un file di configurazione per il server Apache con il quale la configurazione principale si sovrascrive a livello delle cartelle. Questo file permette ai gestori dei siti di apportare modifiche alle impostazioni di specifiche cartelle per un dominio e alle sue sottocartelle. Una funzione del file .htaccess è l’inoltro del dominio lato server ad indirizzi appartenenti ad un unico progetto su altri URL.

Se si crea un file .htaccess con il seguente codice nella root, le richieste al dominio originario vengono reindirizzate lato server al dominio “www.esempio.it”:

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

La riga di codice inizia con “Redirect 301” e stabilisce così il codice di stato HTTP comunicato dal server. A questo segue il percorso ai contenuti che devono essere inoltrati, in questo caso tutti, come stabilisce lo slash. La conclusione è formata dall’indirizzo completo dell’URL di destinazione al quale lo user agent deve essere reindirizzato: “http://www.esempio.it”.

Con questo metodo si possono reindirizzare anche singoli file. Il codice seguente mostra un redirect da una pagina ad un’altra:

Redirect 301 /directory/documento-esempio.html http://www.esempio.it/esempio.html

Dopo il codice di stato 301 viene indicato il percorso della directory in cui si trova il file che deve essere reindirizzato permanentemente (“/directory/documento-esempio.html”), così come l’indirizzo della destinazione di inoltro (“http://www.esempio.it/esempio.html”).

Su un server Apache in cui è attivo il modulo mod_rewrite l’inoltro permanente di una pagina di esempio ad un’altra sarebbe come di seguito:

RewriteEngine On
RewriteRule ^/directory/documento-esempio.html$ http://www.esempio.it/esempio.html [L,R=301]

Nella riga 01 il modulo mod_rewrite del server web Apache viene attivato con il comando “RewriteEngine On”. Dopo segue una “RewriteRule” con il percorso del file di inoltro e l’indirizzo di destinazione. Il segno di omissione e quello del dollaro segnano l’inizio e la fine del percorso, L indica l’ultima regola mod_rewrite per le richieste corrispondenti, R=301 inoltra il codice di stato HTTP 301.

Nella configurazione di un inoltro del dominio tramite .htaccess è da tenere presente che comandi errati in questo file possono ripercuotersi negativamente sul funzionamento del sito. Le relative configurazioni dovrebbero essere in ogni caso testate accuratamente perché le modifiche diventano valide non appena si salva il file .htaccess.

Inoltro PHP

Un inoltro del dominio non avviene solo configurando il file .htaccess, ma anche tramite il comando corrispondente in uno script PHP (per es. nell’index.php). Il codice seguente mostra un inoltro permanente su un URL di destinazione fittizio “www.esempio.it”.

<?php
header("Status: 301 Moved Permanently");
header("Location: http://www.esempio.it");
exit;
?>

Nell’inoltro tramite uno script PHP, il codice di stato HTTP proposto viene definito tramite la funzione “header” nella riga di codice 02. In questo esempio deve essere applicato un inoltro permanente 301. Visto che gli inoltri lato server vengono eseguiti generalmente solo temporaneamente, si deve forzare esplicitamente l’inoltro permanente tramite il codice di stato 301. L’indirizzo di destinazione dell’inoltro del dominio viene inserito ugualmente nella riga di codice 03 con “header”. L’inoltro nell’esempio avviene sull’indirizzo “http://www.esempio.it”. La funzione “exit” nella riga 04 termina lo script ed evita che venga eseguito il codice successivo. Il blocco del codice deve essere posizionato all’inizio per far in modo che l’inoltro tramite script PHP funzioni, prima che il server consegni degli eventuali contenuti HTML alla pagina di inoltro.

Inoltri lato client

Se l’impostazione di un inoltro del dominio lato server non è possibile per motivi tecnici, i gestori dei siti possono ricorrere ad una soluzione basata sul client. Per questo sono a disposizione il meta tag HTML “refresh” e uno corrispondente per JavaScript. Lo svantaggio di un inoltro basato sul client è che il server non consegna alcun codice di stato HTTP al browser richiedente o al web crawler ai quali non viene indicato l’inoltro in modo esplicito. In più gli inoltri lato client non vengono supportati da tutti gli user agent e perciò si corre il rischio che alcuni visitatori non vengano reindirizzati.

Gli inoltri basati sul client si ripercuotono negativamente anche sull’indicizzazione nei motori di ricerca. Un’esplicita esclusione dall’indice tramite il corrispettivo codice di stato HTTP 301 non avviene nel caso di inoltri lato client. Perciò può anche verificarsi nel posizionamento sui motori di ricerca che il dominio inoltrato entri in concorrenza con il dominio di destinazione. Al contrario degli inoltri lato server, che a parte per il cambio di indirizzo rimangono invisibili per l’utente, gli inoltri basati sul client sono sempre accompagnati da un ritardo che l’utente potrebbe notare.

Consiglio SEO

Evitate le catene di reindirizzamento! Se ne utilizzate troppe, rischiate di dover fare i conti con una diminuzione del traffico.

Inoltro tramite meta tag HTML “refresh”

L’inoltro meta tag HTML viene impostato tramite i meta tag con l’attributo “http-equiv”. Per questo deve essere creato soltanto un semplice file HTML con il tag appropriato nell’header per l’inoltro. Per indicare il reindirizzamento agli utenti, dovrebbe essere creato un documento HTML esplicativo al riguardo. Ad es. frasi comuni sono “Sarete reindirizzati entro pochi secondi”. Il codice seguente mostra un semplice inoltro di dominio tramite meta tag HTML “refresh” ad un indirizzo di destinazione fittizio:

<meta http-equiv="refresh" content="10; url=http://www.esempio.it/">

Tramite il meta tag http-equiv="refresh" viene ordinato al client di inoltrare il dominio. Come questo avvenga, viene definito nell’attributo Content. Nell’esempio è previsto un inoltro al dominio di destinazione “www.esempio.it” dopo 10 secondi.

Inoltro tramite JavaScript

Una possibilità facile per l’inoltro del dominio lato client è offerta da JavaScript. Ma come nel caso del meta tag “refresh” dovreste utilizzare gli inoltri con JavaScript solo in via eccezionale perché il linguaggio di scripting per motivi di sicurezza potrebbe non essere supportato da tutti i browser. In più con gli inoltri JavaScript nascono problemi per i web crawler e gli utenti che hanno attivi dei componenti aggiuntivi per bloccare gli script. Il seguente codice indica un classico inoltro del dominio con JavaScript:

<script> 
<!--
window.location.replace('http://www.esempio.it'); 
//-->
</script>

Qui è rilevante soprattutto la riga 03. Nel codice di esempio viene utilizzato l’oggetto “window.location” per rimandare all’indirizzo web attuale. Il comando “replace” indica al browser di inoltrare l’utente al dominio di destinazione definito tra parentesi “www.esempio.it”.


Abbiamo una proposta per te:
Web hosting a partire da 1 €/mese!

Dominio gratis
Certificato SSL Wildcard incluso
Assistenza clienti 24/7
A partire da 1 €/mese IVA escl. per un anno,
poi 8 €/ mese IVA escl.