É possível configurar uma página HTML básica para redirecionar para outra página em carga?
É possível configurar uma página HTML básica para redirecionar para outra página em carga?
Respostas:
Tente usar:
<meta http-equiv="refresh" content="0; url=http://example.com/" />
Nota: Coloque-o na seção principal.
Além disso, para navegadores mais antigos, se você adicionar um link rápido, caso ele não seja atualizado corretamente:
<p><a href="http://example.com/">Redirect</a></p>
Aparecerá como
Isso ainda permitirá que você chegue aonde está indo com um clique adicional.
0
meios para atualizar após 0 segundos. Você pode dar ao usuário mais tempo para saber o que está acontecendo.
Eu usaria ambos código meta e JavaScript e teria um link por precaução.
<!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>
Para garantir a integridade, acho que a melhor maneira, se possível, é usar os redirecionamentos do servidor; portanto, envie um código de status 301 . Isso é fácil através de .htaccess
arquivos usando o Apache ou através de vários plugins usando o WordPress . Estou certo de que também existem plugins para todos os principais sistemas de gerenciamento de conteúdo. Além disso, o cPanel possui uma configuração muito fácil para redirecionamentos 301, se você o tiver instalado no servidor.
body
tags e coisas do gênero. Talvez valide e talvez funcione em navegadores comuns. Estou certo de que há alguns casos adicionais que causam problemas e o benefício parece pequeno.
click here
não é recomendável ter um link, pois o leitor de tela será mais difícil de navegar. Os links devem estar no texto que descreve o destino, para que o usuário saiba onde ele chegará antes de segui-lo e, no entanto, ele interage com ele.
Eu também adicionaria um link canônico para ajudar seu pessoal de SEO :
<link rel="canonical" href="http://www.example.com/product.php?item=swedish-fish"/>
A seguinte metatag, colocada entre a parte interna da cabeça, instruirá o navegador a redirecionar:
<meta http-equiv="Refresh" content="seconds; url=URL">
Substitua segundos pelo número de segundos a aguardar antes do redirecionamento e substitua o URL pelo URL para o qual você deseja redirecionar.
Como alternativa, você pode redirecionar com JavaScript. Coloque isso dentro de uma tag de script em qualquer lugar da página:
window.location = "URL"
Este é um resumo de todas as respostas anteriores, além de uma solução adicional usando o HTTP Refresh Header via .htaccess
1. Cabeçalho de Atualização HTTP
Primeiro de tudo, você pode usar .htaccess para definir um cabeçalho de atualização como este
Header set Refresh "3"
Este é o equivalente "estático" do uso da header()
função no PHP
header("refresh: 3;");
Observe que esta solução não é suportada por todos os navegadores.
2. JavaScript
Com um URL alternativo :
<script>
setTimeout(function(){location.href="http://example.com/alternate_url.html"} , 3000);
</script>
Sem um URL alternativo:
<script>
setTimeout("location.reload(true);",timeoutPeriod);
</script>
Via jQuery:
<script>
window.location.reload(true);
</script>
3. Atualização Meta
Você pode usar a atualização meta quando dependências no JavaScript e nos cabeçalhos de redirecionamento forem indesejados
Com um URL alternativo:
<meta http-equiv="Refresh" content="3; url=http://example.com/alternate_url.html">
Sem um URL alternativo:
<meta http-equiv="Refresh" content="3">
Usando <noscript>
:
<noscript>
<meta http-equiv="refresh" content="3" />
</noscript>
Opcionalmente
Conforme recomendado por Billy Moon, você pode fornecer um link de atualização caso algo dê errado:
Se você não for redirecionado automaticamente: <a href='http://example.com/alternat_url.html'>Click here</a>
Recursos
setTimeout
com uma corda. Passe uma função em seu lugar.
Seria melhor configurar um redirecionamento 301 . Consulte o artigo 301 das Ferramentas para webmasters do Google redireciona .
Se você deseja seguir os padrões da web modernos, evite meta-redirecionamentos HTML simples. Se você não conseguir criar o código do lado do servidor, escolha o redirecionamento JavaScript .
Para oferecer suporte a navegadores desativados em JavaScript, adicione uma linha de redirecionamento de HTML a um noscript
elemento. O noscript
meta redirecionamento aninhado combinado com ocanonical
tag também ajudará na classificação do seu mecanismo de pesquisa.
Se você deseja evitar loops de redirecionamento, use o comando location.replace()
função JavaScript.
Um código de redirecionamento de URL do lado do cliente adequado é semelhante a este (com um Internet Explorer 8 e correção mais baixa e sem demora):
<!-- 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"
foi reprovado pelo W3C.
Você pode usar um "redirecionamento" META :
<meta http-equiv="refresh" content="0; url=http://new.example.com/address" />
ou redirecionamento JavaScript (observe que nem todos os usuários têm o JavaScript ativado, portanto, sempre prepare uma solução de backup para eles)
<script language="javascript">
window.location = "http://new.example.com/address";
</script>
Mas prefiro usar o mod_rewrite , se você tiver a opção.
Coloque o seguinte código entre as marcas <HEAD> e </HEAD> do seu código HTML:
<meta HTTP-EQUIV="REFRESH" content="0; url=http://example.com/index.html">
O código de redirecionamento HTML acima redirecionará seus visitantes para outra página da web instantaneamente. A content="0;
pode ser alterado para o número de segundos que você deseja que o navegador espera antes de redirecionamento.
Encontrei um problema ao trabalhar com um aplicativo jQuery Mobile , onde, em alguns casos, minha tag de cabeçalho Meta não conseguia um redirecionamento corretamente (o jQuery Mobile não lê automaticamente os cabeçalhos de cada página, portanto, colocar o JavaScript também é ineficaz, a menos que o envolva complexidade). Eu achei a solução mais fácil nesse caso foi colocar o redirecionamento JavaScript diretamente no corpo do documento, da seguinte maneira:
<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>
Isso parece funcionar em todos os casos para mim.
A maneira simples que funciona para todos os tipos de páginas é apenas adicionar uma meta
tag na cabeça:
<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>
Você deve usar JavaScript. Coloque o seguinte código em suas tags de cabeçalho:
<script type="text/javascript">
window.location.assign("http://www.example.com")
</script>
Você pode redirecionar automaticamente pelo código de status HTTP 301 ou 302.
Para PHP:
<?php
Header("HTTP/1.1 301 Moved Permanently");
Header("Location: http://www.redirect-url.com");
?>
Eu uso um script que redireciona o usuário de index.html para o URL relativo da Página de login
<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>
Apenas para uma boa medida:
<?php
header("Location: example@example.com", TRUE, 303);
exit;
?>
Verifique se não há ecos acima do script, caso contrário ele será ignorado. http://php.net/manual/en/function.header.php
Basta usar o evento onload da tag body:
<body onload="window.location = 'http://example.com/'">
Motor de barbear por um atraso de 5 segundos:
<meta http-equiv="Refresh"
content="5; url=@Url.Action("Search", "Home", new { id = @Model.UniqueKey }))">
Você não precisa de nenhum código JavaScript para isso. Escreva isso na <head>
seção da página HTML:
<meta http-equiv="refresh" content="0; url=example.com" />
Assim que a página carregar em 0 segundos, você poderá acessar sua página.
Tanto quanto eu os entendo, todos os métodos que vi até agora para esta pergunta parecem adicionar o local antigo à história. Para redirecionar a página, mas não tenho o local antigo no histórico, eu uso o replace
método:
<script>
window.location.replace("http://example.com");
</script>
Esta é uma solução de redirecionamento com tudo o que eu queria, mas não consegui encontrar em um bom snippet limpo para cortar e colar.
Este trecho tem várias vantagens:
Como usar:
Se você migrou um site inteiro, no servidor antigo, pare o site original e crie outro com esse arquivo como o arquivo index.html padrão na pasta raiz. Edite as configurações do site para que qualquer erro 404 seja redirecionado para esta página index.html. Isso captura qualquer pessoa que acessa o site antigo com um link em uma página de nível inferior, etc.
Agora vá para a tag de script de abertura e edite os endereços da web do site antigo e do novo site e altere o valor de segundos conforme necessário.
Salve e inicie seu site. Trabalho feito - hora de tomar um café.
<!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>
Redirecione usando JavaScript, <noscript>
caso JS esteja desativado.
<script>
window.location.replace("https://google.com");
</script>
<noscript>
<a href="https://google.com">Click here if you are not redirected automatically.</a>
</noscript>
Use este código:
<meta http-equiv="refresh" content="0; url=https://google.com/" />
Por favor, preste atenção: coloque-o na etiqueta da cabeça.
Você pode fazer isso em javascript:
location = "url";
Você pode usar isso
<meta http-equiv="refresh" content="0; url=http://newpage.com/" />