Overblog Tutti i blog Blog migliori Scienza e tecnologia
Edit post Segui questo blog Administration + Create my blog
MENU

Vuoi costruire il tuo business su Internet? Ho già fatto consulenza e-commerce per Pixmania, Unieuro, Pc City, ComputerDiscount, Essilor. Moda, elettronica, informatica, immobiliare,...

Pubblicità

Guida al redirect 301

Guida al redirect 301

Esempi di .htaccess per redirect 301

Il redirect è una particolare direttiva per il nostro web-server che obbliga, sotto particolari condizioni da noi dettate, a "tradurre" un URL digitato dall'utente verso un indirizzo particolare. Ad esempio potremmo dirottare tutte le richieste ad un vecchio sito verso il nuovo hostname, oppure cambiare il path della cartella dove abbiamo installato ad es. la nuova versione di Joomla. Il redirect 301 (301 redirect), poi, è uno di quelli più utilizzati per mantenere intatto il ranking del proprio sito web quando si migrano i dati da una macchina all'altra. 

 

In PHP si può fare redirect "grezzo" (con un meccanismo non diverso da quello implementato da moltissimi hosting gratuiti condivisi) con il comando Header() direttamente all'interno della pagina:


<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.new-url.com" );
?>


e non sarebbe troppo diverso farlo in Java (JSP):


<%
response.setStatus(301);
response.setHeader( "Location", "http://www.new-url.com/" );
response.setHeader( "Connection", "close" );
%>
 

Tuttavia queste tecniche sono deprecate in quanto non offrono grande flessibilità e, in genere, non piacciono tantissimo agli utenti dell'applicazione e ai motori di ricerca. Alcuni hosting gratuiti italiani, tuttavia, implementano la gestione di domini di primo livello (.IT) attraverso questo semplice meccanismo appena visto: il problema è che la pagina di tale dominio avrà quasi certamente il seguente codice subito dopo </head> (o qualcosa di simile):

 

<frameset>

 <frame src="http://indirizzo.disecondoterzolivello.it" noresize>

 <frame name="XYZZY" scrolling="no" noresize>

 <noframes>

...linka il sito di secondo livello, dato che se arriva qui il browser non supporta i frame!

 </noframes>

</frameset>

 

che camuffa, ai motori di ricerca ed agli utenti, il reale contenuto della pagina! I redirect HTML sono dunque sconsigliati proprio perchè "màscherano" il vero contenuto della pagina (meta tag inclusi), per cui è meglio armarsi di pazienza ed agire sul file .htaccess.

Precondizione per farlo è che sul server esista Apache con il modulo Mod-rewrite abilitato (di solito lo è di default). Qui dovrei aprire la classica parentesi di qualche chilometro: non è sempre agevole gestire questo file, dato che alcune impostazioni lavorano "al volo" su alcuni hosting e si rifiutano di funzionare in altri. Nonostante questo, sulla rete c'è chi giura che le impostazioni che ha utilizzato funzionino perfettamente ovunque: ci vorrebbe un minimo di onestà professionale in più, a mio avviso, ed ammettere banalmente che si può trarre anche solo spunto da un articolo sul WEB, senza  ingenerare la tendenza al copia-incolla-e-tutto-funziona (magari!).

Ad esempio la configurazione dei "clean-URL" di Drupal prevede come pre-condizione l'inserimento in questo file
delle seguenti righe:

 

   RewriteEngine on
   RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

 

che propongo perchè credo che siano esplicative per la comprensione di quello che diremo a breve. La prima riga serve ad attivare il modulo Mod_Rewrite (quello che opera le riscritture degli URL in Apache), mentre RewriteBase indica quale sia la root del sistema (poteva essere ad es. /drupal). Abbiamo poi due condizioni, che significano: se il REQUEST_FILENAME è un file o una directory, utilizza la regola di riscrittura degli URL dell'ultima riga.

 

Quest'ultima esprime, mediante espressione regolare, che tutti gli URL del tipo:

 

www.qualsiasicosa.org/index.php?q=argomento

 

andranno riscritti come www.qualsiasicosa.org/argomento. RewriteRule è il vero motore di tutto questo meccanismo ("real rewriting workhorse", hanno scritto nella guida di Apache 2): notate che nella riga che ho riportato $1 indica "il primo argomento dell'URL" (ovvero argomento, nell'esempio). Le direttive [L,QSA] che sono state messe in coda indicano:

  • L: corrisponde ad un break di C o Java, ovvero indica che dopo questo comando non deve essere eseguito alcun altro rewrite;
  • QSA: forza il rewrite a scrivere in appending quanto definito dalla regole invece di effettuare la sostituzione (This flag forces the rewrite engine to append a query string part of the substitution string to the existing string, instead of replacing it. Use this when you want to add more data to the query string via a rewrite rule.)

Ricordate, infine, che l'ordine in cui inserite più di una RewriteRule è rilevante per il funzionamento del meccanismo di per sè. Passiamo infine al redirect da un vecchio sito ad uno nuovo: il file .htaccess sarà di questo tipo.

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L] 

 

Fonti:

http://www.webconfs.com/how-to-redirect-a-webpage.php

http://forums.digitalpoint.com/showthread.php?t=187035

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

 

Pubblicità
Torna alla home
Condividi post
Repost0
Per essere informato degli ultimi articoli, iscriviti:
Commenta il post