È possibile impostare una pagina HTML di base per reindirizzare a un'altra pagina al caricamento?
È possibile impostare una pagina HTML di base per reindirizzare a un'altra pagina al caricamento?
Risposte:
Prova a usare:
<meta http-equiv="refresh" content="0; url=http://example.com/" />
Nota: posizionalo nella sezione testa.
Inoltre, per i browser meno recenti, se aggiungi un collegamento rapido nel caso in cui non si aggiorni correttamente:
<p><a href="http://example.com/">Redirect</a></p>
Apparirà come
Ciò ti consentirà comunque di arrivare dove stai andando con un clic aggiuntivo.
0
mezzo per aggiornare dopo 0 secondi. Potresti voler concedere all'utente un po 'più di tempo per sapere cosa sta succedendo.
Vorrei utilizzare entrambi meta , e il codice JavaScript e sarebbe avere un link per ogni evenienza.
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="0; url=http://example.com">
<script type="text/javascript">
window.location.href = "http://example.com"
</script>
<title>Page Redirection</title>
</head>
<body>
<!-- Note: don't tell people to `click` the link, just tell them that it is a link. -->
If you are not redirected automatically, follow this <a href='http://example.com'>link to example</a>.
</body>
</html>
Per completezza, penso che il modo migliore, se possibile, sia utilizzare i reindirizzamenti del server, quindi inviare un codice di stato 301 . Questo è facile da fare tramite .htaccess
file utilizzando Apache o tramite numerosi plug-in tramite WordPress . Sono sicuro che ci sono anche plugin per tutti i principali sistemi di gestione dei contenuti. Inoltre, cPanel ha una configurazione molto semplice per reindirizzamenti 301 se è installato sul server.
body
tag e simili. Forse si convalida e forse funziona nei browser comuni. Sono sicuro che ci sono alcuni casi marginali che causano problemi e il vantaggio sembra piccolo.
click here
non è consigliabile avere un collegamento, poiché lo screen reader sarà più difficile da navigare. I collegamenti dovrebbero essere sul testo che descrive la destinazione, in modo che l'utente sappia dove arriveranno prima di seguirla e comunque interagiranno con essa.
Vorrei anche aggiungere un link canonico per aiutare le persone SEO :
<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish"/>
Il seguente meta tag, posizionato all'interno della testa, indicherà al browser di reindirizzare:
<meta http-equiv="Refresh" content="seconds; url=URL">
Sostituisci i secondi con il numero di secondi di attesa prima del reindirizzamento e sostituisci l'URL con l'URL che desideri reindirizzare.
In alternativa, puoi reindirizzare con JavaScript. Posizionalo all'interno di un tag di script in qualsiasi punto della pagina:
window.location = "URL"
Questo è un riepilogo di tutte le risposte precedenti più una soluzione aggiuntiva che utilizza HTTP Refresh Header tramite .htaccess
1. Intestazione di aggiornamento HTTP
Prima di tutto, puoi usare .htaccess per impostare un'intestazione di aggiornamento come questa
Header set Refresh "3"
Questo è l'equivalente "statico" dell'uso della header()
funzione in PHP
header("refresh: 3;");
Questa soluzione non è supportata da tutti i browser.
2. JavaScript
Con un URL alternativo :
<script>
setTimeout(function(){location.href="http://example.com/alternate_url.html"} , 3000);
</script>
Senza un URL alternativo:
<script>
setTimeout("location.reload(true);",timeoutPeriod);
</script>
Tramite jQuery:
<script>
window.location.reload(true);
</script>
3. Meta Refresh
Puoi utilizzare il meta refresh quando le dipendenze da JavaScript e le intestazioni di reindirizzamento sono indesiderate
Con un URL alternativo:
<meta http-equiv="Refresh" content="3; url=http://example.com/alternate_url.html">
Senza un URL alternativo:
<meta http-equiv="Refresh" content="3">
Utilizzando <noscript>
:
<noscript>
<meta http-equiv="refresh" content="3" />
</noscript>
facoltativamente
Come raccomandato da Billy Moon, puoi fornire un link di aggiornamento nel caso qualcosa vada storto:
Se non vieni reindirizzato automaticamente: <a href='http://example.com/alternat_url.html'>Click here</a>
risorse
setTimeout
con una stringa. Passa invece una funzione.
Sarebbe meglio impostare un reindirizzamento 301 . Consulta i reindirizzamenti dell'articolo 301 degli Strumenti per i Webmaster di Google .
Se non vedi l'ora di seguire i moderni standard web, dovresti evitare i semplici reindirizzamenti HTML. Se non riesci a creare un codice lato server, devi scegliere invece il reindirizzamento JavaScript .
Per supportare i browser con disabilitazione JavaScript, aggiungere una linea di meta reindirizzamento HTML a un noscript
elemento. Il noscript
meta reindirizzamento nidificato combinato con il canonical
tag aiuterà anche le classifiche dei motori di ricerca.
Se si desidera evitare loop di reindirizzamento, è necessario utilizzare la location.replace()
funzione JavaScript.
Un codice di reindirizzamento URL sul lato client corretto è simile al seguente (con un Internet Explorer 8 e una correzione inferiore e senza indugio):
<!-- Pleace this snippet right after opening the head tag to make it work properly -->
<!-- This code is licensed under GNU GPL v3 -->
<!-- You are allowed to freely copy, distribute and use this code, but removing author credit is strictly prohibited -->
<!-- Generated by http://insider.zone/tools/client-side-url-redirect-generator/ -->
<!-- REDIRECTING STARTS -->
<link rel="canonical" href="https://stackoverflow.com/"/>
<noscript>
<meta http-equiv="refresh" content="0; URL=https://stackoverflow.com/">
</noscript>
<!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]-->
<script type="text/javascript">
var url = "https://stackoverflow.com/";
if(typeof IE_fix != "undefined") // IE8 and lower fix to pass the http referer
{
document.write("redirecting..."); // Don't remove this line or appendChild() will fail because it is called before document.onload to make the redirect as fast as possible. Nobody will see this text, it is only a tech fix.
var referLink = document.createElement("a");
referLink.href = url;
document.body.appendChild(referLink);
referLink.click();
}
else { window.location.replace(url); } // All other browsers
</script>
<!-- Credit goes to http://insider.zone/ -->
<!-- REDIRECTING ENDS -->
<meta http-equiv="refresh"
è deprecato dal W3C.
È possibile utilizzare un "reindirizzamento" META :
<meta http-equiv="refresh" content="0; url=http://new.example.com/address" />
o reindirizzamento JavaScript (tieni presente che non tutti gli utenti hanno JavaScript abilitato, quindi prepara sempre una soluzione di backup per loro)
<script language="javascript">
window.location = "http://new.example.com/address";
</script>
Ma preferirei usare mod_rewrite , se hai l'opzione.
Inserisci il seguente codice tra i tag <HEAD> e </HEAD> del tuo codice HTML:
<meta HTTP-EQUIV="REFRESH" content="0; url=http://example.com/index.html">
Il codice di reindirizzamento HTML sopra riportato reindirizza istantaneamente i tuoi visitatori a un'altra pagina web. È content="0;
possibile modificare il numero di secondi che il browser deve attendere prima di reindirizzare.
Ho riscontrato un problema mentre lavoravo con un'applicazione jQuery Mobile , in cui in alcuni casi il mio tag di intestazione Meta non riusciva a ottenere un reindirizzamento corretto (jQuery Mobile non legge automaticamente le intestazioni per ogni pagina, quindi inserire JavaScript è anche inefficace a meno che non venga inserito in complessità). Ho trovato la soluzione più semplice in questo caso era quella di inserire il reindirizzamento JavaScript direttamente nel corpo del documento, come segue:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="0;url=myURL" />
</head>
<body>
<p>You are not logged in!</p>
<script language="javascript">
window.location = "myURL";
</script>
</body>
</html>
Questo sembra funzionare in ogni caso per me.
Il modo semplice che funziona per tutti i tipi di pagine è solo quello di aggiungere un meta
tag in testa:
<html>
<head>
...
<meta HTTP-EQUIV="REFRESH" content="seconds; url=your.full.url/path/filename">
...
</head>
<body>
Don't put much content, just some text and an anchor.
Actually, you will be redirected in N seconds (as specified in content attribute).
That's all.
...
</body>
</html>
Dovresti usare JavaScript. Inserisci il seguente codice nei tag head:
<script type="text/javascript">
window.location.assign("http://www.example.com")
</script>
È possibile reindirizzare automaticamente tramite il codice di stato HTTP 301 o 302.
Per PHP:
<?php
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://www.redirect-url.com");
?>
Uso uno script che reindirizza l'utente da index.html all'URL relativo della pagina di accesso
<html>
<head>
<title>index.html</title>
</head>
<body onload="document.getElementById('lnkhome').click();">
<a href="/Pages/Login.aspx" id="lnkhome">Go to Login Page<a>
</body>
</html>
Solo per buona misura:
<?php
header("Location: example@example.com", TRUE, 303);
exit;
?>
Assicurati che non ci siano echi sopra lo script, altrimenti verrà ignorato. http://php.net/manual/en/function.header.php
Basta usare l'evento onload del body tag:
<body onload="window.location = 'http://example.com/'">
Motore del rasoio per un ritardo di 5 secondi:
<meta http-equiv="Refresh"
content="5; url=@Url.Action("Search", "Home", new { id = @Model.UniqueKey }))">
Non è necessario alcun codice JavaScript per questo. Scrivi questo nella <head>
sezione della pagina HTML:
<meta http-equiv="refresh" content="0; url=example.com" />
Non appena la pagina viene caricata a 0 secondi, puoi andare alla tua pagina.
Per quanto li capisco, tutti i metodi che ho visto finora per questa domanda sembrano aggiungere la vecchia posizione alla storia. Per reindirizzare la pagina, ma non ho la vecchia posizione nella cronologia, utilizzo il replace
metodo:
<script>
window.location.replace("http://example.com");
</script>
Questa è una soluzione di reindirizzamento con tutto ciò che desideravo, ma che non riuscivo a trovare in un frammento pulito e pulito da tagliare e incollare.
Questo frammento presenta numerosi vantaggi:
Come usare:
Se è stato migrato un intero sito, sul vecchio server arrestare il sito originale e crearne un altro con questo file come file index.html predefinito nella cartella principale. Modifica le impostazioni del sito in modo che qualsiasi errore 404 venga reindirizzato a questa pagina index.html. Questo attira chiunque acceda al vecchio sito con un link in una pagina di livello inferiore ecc.
Ora vai al tag di script di apertura e modifica gli indirizzi web oldsite e newSite e modifica il valore dei secondi in base alle esigenze.
Salva e avvia il tuo sito Web. Lavoro fatto - tempo per un caffè.
<!DOCTYPE html>
<html>
<head>
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">
<style>
body { margin: 200px; font: 12pt helvetica; }
</style>
</head>
<body>
</body>
<script type="text/javascript">
// Edit these to suit your needs.
var oldsite = 'http://theoldsitename.com'
var newSite = "https://thenewsitename.com";
var seconds = 20; // countdown delay.
var path = location.pathname;
var srch = location.search;
var uniq = Math.floor((Math.random() * 10000) + 1);
var newPath = newSite + path + (srch === '' ? "?" + uniq : srch + "&" + uniq);
document.write ('<p>As part of hosting improvements, the system has been migrated from ' + oldsite + ' to</p>');
document.write ('<p><a href="' + newPath + '">' + newSite + '</a></p>');
document.write ('<p>Please take note of the new website address.</p>');
document.write ('<p>If you are not automatically redirected please click the link above to proceed.</p>');
document.write ('<p id="dvCountDown">You will be redirected after <span id = "lblCount"></span> seconds.</p>');
function DelayRedirect() {
var dvCountDown = document.getElementById("dvCountDown");
var lblCount = document.getElementById("lblCount");
dvCountDown.style.display = "block";
lblCount.innerHTML = seconds;
setInterval(function () {
seconds--;
lblCount.innerHTML = seconds;
if (seconds == 0) {
dvCountDown.style.display = "none";
window.location = newPath;
}
}, 1000);
}
DelayRedirect()
</script>
</html>
Reindirizzare utilizzando JavaScript, <noscript>
nel caso in cui JS sia disabilitato.
<script>
window.location.replace("https://google.com");
</script>
<noscript>
<a href="https://google.com">Click here if you are not redirected automatically.</a>
</noscript>
Usa questo codice:
<meta http-equiv="refresh" content="0; url=https://google.com/" />
Si prega di prestare attenzione: inserirlo nel tag head.
Puoi farlo in javascript:
location = "url";
Puoi usare questo
<meta http-equiv="refresh" content="0; url=http://newpage.com/" />