View Full Version : [HTML] redirezione automatica
problema del tutto classico; l'utente richiede al server un certo URL e io voglio che egli venga rediretto automaticamente (senza attesa) ad un altro URL.
quello che mi chiedevo è se esiste un sistema per fare ciò senza ricorrere a Javascript; studiando un po' ho scoperto che col tag meta è possibile aggiungere campi all'header HTTP della risposta del server, e studiando un altro po' ho scoperto che il campo Location di HTTP 1.1 dovrebbe causare una redirezione automatica, quindi ho pensato di inserire questa roba dentro il tag head di una mia pagina:
<meta http-equiv="Location" content="un url assoluto" />
solo che non funziona: non succede niente di niente, il browser (sia IE7 che FF) resta sulla pagina senza andare a visitare quell'altra :help:
vorrei anche provare a fare manualmente una sessione telnet col server per vedere se quell'header HTTP viene effettivamente scritto, solo che non mi riesce la stramaledetta sintassi di una richiesta GET HTTP 1.1; è giusto così?
GET http://www.google.com/ HTTP/1.1
linea vuota
Vincenzo1968
30-05-2008, 01:15
problema del tutto classico; l'utente richiede al server un certo URL e io voglio che egli venga rediretto automaticamente (senza attesa) ad un altro URL.
quello che mi chiedevo è se esiste un sistema per fare ciò senza ricorrere a Javascript; studiando un po' ho scoperto che col tag meta è possibile aggiungere campi all'header HTTP della risposta del server, e studiando un altro po' ho scoperto che il campo Location di HTTP 1.1 dovrebbe causare una redirezione automatica, quindi ho pensato di inserire questa roba dentro il tag head di una mia pagina:
<meta http-equiv="Location" content="un url assoluto" />
solo che non funziona: non succede niente di niente, il browser (sia IE7 che FF) resta sulla pagina senza andare a visitare quell'altra :help:
Ciao,
devi inserire il tag <META> immediatamente dopo il tag <html>:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<META HTTP-EQUIV="Refresh" CONTENT="3;URL=HTTP://www.iltuosito.it/paginadamostrare.html">
<head>
<title>Prova redirezione automatica</title>
</head>
<body>
</body>
</html>
ho provato la tua pagina ma non funziona (ho provato a prendere quel codice così com'è, a salvarlo in una nuova pagina e mettere la pagina in upload sul mio sito, ma non redirige neanche questa); ed inoltre i tag meta non si possono mettere fuori dal tag head.
edit - precisazione: ho preso il codice così com'è, ovviamente però l'URL l'ho cambiato :D
non è che qualcuno saprebbe dirmi che sintassi usare con telnet per fare una richiesta GET? :help:
Io ce l'ho sulla mia home page e funziona
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Titolozzo</title>
<meta http-equiv="REFRESH" content="0;url=http://indirizzo.assoluto"></HEAD>
<BODY>
<BLINK>Un attimino...</BLINK>
</BODY>
</HTML>
non è che qualcuno saprebbe dirmi che sintassi usare con telnet per fare una richiesta GET? :help:
Allora, occorre aprire telnet sulla porta giusta (80?), abilitare il localecho altrimenti non vedi quello che scrivi. Fai la richiesta GET, normalmente con HTTP1.1.
telnet www.pippo.com 80
Premi CTRL+]
SET localecho (invio)
Invio di nuovo per uscire dalla modalita' CTRL+]
GET / HTTP/1.1 (invio) (Notare la prima barra separata dal resto)
Host: www.pippo.com (invio)
(invio)
Occhio che da RFC le richieste sarebbero case sensitive, anche se quasi tutti i web server non lo sentono.
ooh, grazie! ecco perché continuava a dirmi che mancava l'host name: dovevo mettere il campo Host :D
ma questo campo Refresh...? io mica lo trovo nell'RFC di HTTP 1.1 :wtf:
Location non va bene?
comunque dev'essere qualche problema di Altervista (schifo di hosting, scusate ma era gratuito -.-' ); ora provo col telnet.
e ti pareva: il campo non viene messo :cry:
e non solo quello: ho diversi meta http-equiv nella mia pagina, ma nessuno viene preso in considerazione :cry:
ecco perché non funzionava neanche il Pragma no-cache :muro:
dite che non c'è soluzione? o JavaScript o cambio hosting? vedo che AlterVista usa Apache, non so che versione; potrebbe esserci qualcosa di configurabile?
altrimenti conoscete altri hosting gratuiti e possibilmente... di "respiro internazionale"? :D (AlterVista non è fatto per ospitare siti non italiani)
per il momento, visto che l'hosting che pretendo è gratuito, non ho nemmeno bisogno di nessuna tecnologia server-side (AlterVista offre PHP); in futuro mi farebbe comodo e preferirei solo roba Microsoft, ma per allora forse potrò permettermi di spenderci dei soldi.
DanieleC88
31-05-2008, 02:43
L'utilizzo di roba Microsoft che vantaggio ti può dare?
Puoi usare parecchie tecniche diverse, se l'HTML refresh non va usa un po' di Javascript o di PHP (http://guide.solohosting.it/guida.php?id=21&sezione=guide) o ti affidi ad Apache (http://www.webweaver.nu/html-tips/web-redirection.shtml), se AlterVista te lo consente (non ricordo).
P.S.: il refresh HTML è stato aggiunto come feature da Netscape (http://en.wikipedia.org/wiki/URL_redirection#Refresh_Meta_tag_and_HTTP_refresh_header), non è standard, non è necessario e quindi nemmeno automatico che gli altri browser lo supportino ed è sconsigliato, meglio specificare la diversa Location come header HTTP (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30).
Antares88
31-05-2008, 12:33
per il momento, visto che l'hosting che pretendo è gratuito, non ho nemmeno bisogno di nessuna tecnologia server-side (AlterVista offre PHP); in futuro mi farebbe comodo e preferirei solo roba Microsoft, ma per allora forse potrò permettermi di spenderci dei soldi.
Non vedo quale sia il motivo sensato di utilizzare piattaforme proprietarie come IIS e ASP quando ci sono soluzioni migliori come Apache e PHP,per giunta gratuite.
Tra l'altro non ho capito cosa intendi per "altervista non è fatto per ospitare siti non italiani".
Per il resto quoto completamente Daniele. Ti suggerirei di evitare, se possibile, una soluzione javascript per una funzione di questo genere. Infatti, nel malaugurato caso in cui l'utente avesse il JS disabilitato, sarebbe un problema.
Se decidi di usare il php, non devi fare altro che mettere all'url da cui vuoi redirectare una pagina php contenente questo codice:
<? header("location: http://.........."); ?>
Esempio: ho creato una pagina http://www.antares88.com/inc/provaredirect.php contenente il codice
<? header("location: http://www.google.it"); ?> ed effettivamente andando su tale url vengo redirectato istantaneamente su google. Per altro è un metodo molto comodo perché si può fare eseguire altro codice php prima del redirect (ad esempio l'incremento di un contatore, o qualsiasi altra cosa ti venga in mente).
questa idea del PHP sarebbe ottima e infatti la preferirei di gran lunga al JavaScript, ma c'è un problema: il motivo percui devo redirigere verso un'altra pagina è che ho già sul sito una pagina verso la quale esistono dei link su altri siti (forum su cui ho spammato :D) e che alla prossima versione del sito diventerà obsoleta; di conseguenza vorrei che chiunque non abbia il link aggiornato e vada sul link vecchio venga rediretto verso quello nuovo. il problema consiste nel fatto che la pagina vecchia ha l'estensione .html e quindi non può contenere codice PHP :cry: (o almeno non credo)
DanieleC88
31-05-2008, 15:17
Basta che sia consentito ad Apache di far fare il parsing delle estensioni .html a PHP, ma devi cambiare proprio le impostazioni (ergo: se AlterVista non te lo consente, ti attacchi). Ripeto, però, a patto di conoscere un minimo di espressioni regolari puoi sostituire l'intero URL usando l'URL rewriting, modifichi .htaccess come scritto nel link che ti ho messo prima e il gioco è fatto. ;)
ti affidi ad Apache (http://www.webweaver.nu/html-tips/web-redirection.shtml), se AlterVista te lo consente (non ricordo). uuuuh, si può fare anche dal file .htaccess!! questa strada sembra ottima, AlterVista ricordo che di recente ha introdotto la possibilità di gestire .htaccess; del quale non so nulla :D
poi mi studio il link. grazie Daniele :)
P.S.: il refresh HTML è stato aggiunto come feature da Netscape (http://en.wikipedia.org/wiki/URL_redirection#Refresh_Meta_tag_and_HTTP_refresh_header), non è standard, non è necessario e quindi nemmeno automatico che gli altri browser lo supportino ed è sconsigliato, meglio specificare la diversa Location come header HTTP (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30). si, infatti se ho la possibilità di inserire degli headers HTTP non vedo perché usare questo Refresh che non è standard quando posso usare un tranquillissimo Location.
Basta che sia consentito ad Apache di far fare il parsing delle estensioni .html a PHP, ma devi cambiare proprio le impostazioni (ergo: se AlterVista non te lo consente, ti attacchi). Ripeto, però, a patto di conoscere un minimo di espressioni regolari puoi sostituire l'intero URL usando l'URL rewriting, modifichi .htaccess come scritto nel link che ti ho messo prima e il gioco è fatto. ;) si si, infatti devo studiare :D
nuovamente grazie
Antares88
31-05-2008, 15:32
Basta che sia consentito ad Apache di far fare il parsing delle estensioni .html a PHP, ma devi cambiare proprio le impostazioni (ergo: se AlterVista non te lo consente, ti attacchi). Ripeto, però, a patto di conoscere un minimo di espressioni regolari puoi sostituire l'intero URL usando l'URL rewriting, modifichi .htaccess come scritto nel link che ti ho messo prima e il gioco è fatto. ;)
si, è vero, basta usare l'url rewriting. di solito si usa per rendere url complessi più friendly ai motori di ricerca, ma penso si possa adattare benissimo allo scopo di alberto.
tra l'altro mi stavo scontrando con i files .htaccess proprio oggi, ma per altri motivi.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.