Redirect 301, 302 con Apache e htaccess
Parecchi webmaster hanno l’esigenza per diversi motivi di dover effettuare dei redirect, siano essi redirect 301 (Moved Permanently) o redirect 302 (Moved Temporarily), in questo articolo cercheremo di capire quale fà al caso nostro e come realizzarli tecnicamente. Un redirect si può effettuare in molteplici modi, sia lato client che lato server. Lato client la soluzione più semplice è utilizzare javascript, mentre lato server si può effettuare direttamente tramite istruzioni al webserver oppure all’interno di pagine dinamiche quali PHP, ASP, ASP.NET e così via. Illustreremo in questo articolo i redirect effettuati lato server con il webserver Apache e l’ausilio del file .htaccess.
La prima esigenza più comune che un webmaster deve affrontare è il corretto instradamento degli utenti e degli spider dei motori di ricerca, in questo ambito vengono difatto utilizzati i redirect.
Primo esempio: sito.it Vs www.sito.it
Quando registriamo un dominio di secondo livello possiamo di utilizzarlo così com’è (sito.it) oppure possiamo come convenzione utilizzare il sottodominio di terzo livello www. (www.sito.it). La cosa che parecchi webmaster vogliono evitare è la possibilità che alcuni utenti e spider utilizzino la prima soluzione e altri la seconda, quindi opta per il redirect permanente verso il sito con il www. Per implementare questa situazione dobbiamo inserire nel file .htaccess il seguente codice:
RewriteEngine on
rewritecond %{http_host} ^sito.it
rewriterule ^(.*)$ http://www.sito.it/$1 [r=301,L]
In questo modo diciamo al mod_Rewrite di Apache che qualsiasi richiesta al dominio sito.it e quindi pure sito.it/nomepagina1.htm ecc.. vengono rigirate tramite redirect 301 tutte su www.sito.it e quindi pure su www.sito.it/nomepagina1.htm
Secondo esempio: Sito in manutenzione o under costruction
Potreste avere l’esigenza di dirottare qualsiasi utente che chieda una qualsiasi pagina del sito su una pagina “spiacente manutenzione in corso”, per poi ripristinare il corretto uso del sito dopo i lavori di manutenzione. Essendo un redirect temporaneo useremo il 302 anzicchè il 301 usato nell’esempio precedente. Passiamo alle istruzioni:
RewriteEngine On
Rewritecond %{http_host} ^www.sito.it
Rewritecond %{request_uri} !/manutenzione\.html$
Rewriterule .* /manutenzione.html [R=302,L]
Come prima impartiamo le istruzioni al modulo mod_rewrite di Apache in modo che qualsiasi richiesta al sito (www.sito.it) che arrivi venga dirottata sulla pagina manutenzione.html tranne però le richieste che arrivano direttamente sulla pagina manutenzione.html altrimenti si creerebbe un loop infinito di redirect.
5 Comments for this entry
-
Salve,
purtroppo sono incappato in un hosting abbastanza “pessimo” ed ho un piccolo problema:
tutte le pagine senza “www” non vengono caricate.
Allora ho fatto questo:
Ho rediretto i DNS * e @ del mio sito sul mio ip statico dove sta in esecuzione xampp always on così da intercettare le richieste, e poi ho fatto una index.php che mi trasforma le richieste senza www in richieste con www tramite il codice:putroppo non funziona come dovrebbe (a volte va, altre no).
A me servirebbe un “redirect wild card” da “http://sito.ext/*” a “http://www.sito.ext/*” per qualunque valore di * in PHP (file, sottocartelle, variabili), ed ho a disposizione tutto apache per farlo, ma non so come.
Mi potete aiutare?
Sarebbe una grande cosa se potesse essere “indipendente” dal dominio, cioè ogni richiesta del tipo sito1.ext, sito2.ext… si trasformi automaticamente in http://www.sito1…, anche se la cosa non è fondamentale.
Grazie.Dimenticavo: ovviamente il sito NON si trova sul mio pc, devo solo “reindirizzare” la richiesta.
-
MTBVulture Rionero
dicembre 23rd, 2008 on 23:05grazie.
in effetti così risolvo, ma vorrei sapere se è possibile “emulare” in qualche modo l’.htacess/modrewrite tramite l’utilizzo UNICAMENTE di php, magari tramite variabili $_SERVER o simili…
CMQ per ora sto usando questo .htaccess e va alla grande!
Una domanda a proposito: purtoppo in google tutte le pagine erano indicizzate SENZA www, ora sono obbligato ad usarlo: dite che con questo escamotage (301), cambiando tutte le sitemap (mettendo i www) ed indicando a google che quello con www è il dominio principale riesco a “trasferire” il pagerank sulla versione con www (senza: pagerank 3, con: pagerank 1… non mi va di perdere tutto questo lavoro da SEO.. :( )
Grazie ancora -
ArMyBoT
febbraio 27th, 2009 on 23:06Ciao, ho un problema simile.
In particolare devo dismettere un sito statico ben indicizzato per uno dinamico (attualmente in subfolder) da indicazzare.
Aldilà di fare un redirect 301 secco su .htaccess dell’url “vecchio” verso il nuovo (soluzione funzionante ma ho avuto modo di vedere che dopo un po’ google rimuove le pagine che subiscono il redirect dal db) volevo provare quest soluzione sfruttando il rewrite.Essendo tutto sullo stesso dominio come pongo le condizioni?
A esempio così è giusto?RewriteEngine on
rewritecond %{http_host} ^sito.it\.miapaginastaticaindicizzata01\.html
rewritecond %{http_host} ^sito.it\.miapaginastaticaindicizzata02\.html
rewritecond %{http_host} ^sito.it\.miapaginastaticaindicizzata03\.html
.
.
.
rewriterule ^(.*)$ http://www.sito.it [r=301,L](le richieste verso http://www.miosito.it/miapaginastaticaindicizzata01.html http://www.miosito.it/miapaginastaticaindicizzata02.html
http://www.miosito.it/miapaginastaticaindicizzata03.html dovrebbero essere permanentemente dirottate verso l’home di http://www.miosito.it senza causare alterazione del pagerank delle pagine statiche interessate)E’ giusto secondo voi?
Grazie,
A.
-
RHEV.it Red Hat Enterprise Virtualization il blog di Korematic
Finalmente siamo riusciti a sintetizzarlo: http://www.rhev.it. Migliori contenuti, link e casi di successo cercheremo di mettere tutto sul nuovo sito. Se sei un appassionato di KVM, SPICE e ...
-
Studio per l’ottimizzazione del bilancio energetico di un Centro di Calcolo
Le tematiche energetiche ed ambientali, nell’IT vivono oggi un grande momento di crescita scientifica. Di conseguenza c'è sempre più richiesta nel mondo della ricerca di studi per affrontare con ...



MTBVulture
dicembre 22nd, 2008 on 23:38