Redirecionar com uma tag meta refresh
Em HTML puro, um redirecionamento é uma tag <meta http-equiv="refresh"> no <head> da página antiga:
<meta http-equiv="refresh" content="0; url=https://example.com/new-page">
O número é o atraso em segundos, depois vem um ponto e vírgula, depois url= e o endereço de destino. 0 redireciona assim que a página carrega. Aqui está um arquivo completo de "a página mudou de endereço". O atraso está em uma hora para esta prévia ficar parada; numa página real você usaria 0 ou alguns segundos:
Duas alternativas deixam a página segura: o link visível (para quem tem um navegador que não segue o refresh, e para quem usa leitor de tela e quer escolher), e <link rel="canonical">, que diz aos buscadores qual URL é a verdadeira. Se você mudar o atraso para 0 aqui, a própria prévia vai sair para example.com; aperte Reset para ter o exemplo de volta.
Atualizar uma página automaticamente
Deixe a URL de fora e a página se recarrega depois do atraso. content="5" recarrega a cada 5 segundos. A primeira caixa abaixo é uma pequena página com essa tag, para você acompanhar: o horário de carregamento dela pula a cada 5 segundos, e o texto que você digita no campo é apagado pela recarga. A segunda caixa mantém o relógio atualizado com JavaScript e preserva o seu texto:
Um refresh carrega a página inteira de novo, então o que o leitor estava fazendo nela é interrompido. Isso é aceitável numa página com que ninguém interage, como uma tela de status na parede. Para dashboards, placares e feeds, atualize só a parte que muda, como faz a segunda caixa.
Redirecionar com JavaScript
Quando o redirecionamento depende de algo que só o navegador sabe (a escolha do usuário, o estado de login, o tamanho da tela), use JavaScript:
// Replaces the current page in the history: Back skips it
location.replace('https://example.com/new-page');
// Adds a history entry: Back returns to this page
location.href = 'https://example.com/new-page';
Para um redirecionamento, location.replace é quase sempre o que você quer. Com location.href, apertar Voltar leva à página que redirecionou, que redireciona de novo, e o usuário fica preso.
Prefira um redirecionamento no servidor
Um meta refresh ou um script só rodam depois que o navegador baixou a página antiga. Um redirecionamento no servidor responde à requisição com um código de status e o novo endereço, antes de qualquer HTML ser enviado:
- 301 (movido permanentemente) ou 308: a página tem um novo endereço para sempre. Os buscadores transferem o ranqueamento da URL antiga para a nova.
- 302 (encontrado) ou 307: uma mudança temporária; a URL antiga continua sendo a principal.
Como configurar depende da sua hospedagem. Algumas formas comuns:
# Apache (.htaccess)
Redirect 301 /old-page https://example.com/new-page
# nginx (inside a server block)
location = /old-page { return 301 https://example.com/new-page; }
# Netlify or Cloudflare Pages (_redirects file)
/old-page /new-page 301
Use um meta refresh quando não dá para mudar nada no servidor, por exemplo numa hospedagem estática sem regras de redirecionamento. O Google trata um meta refresh instantâneo como um redirecionamento permanente e um com atraso como temporário, então um atraso 0 é o que mais se aproxima de um 301.
Redirecionamentos com atraso e acessibilidade
Um redirecionamento com atraso pode tirar o leitor da página no meio de uma frase. As diretrizes de acessibilidade (WCAG) consideram redirecionamentos com tempo uma falha; um redirecionamento instantâneo não tem problema. Se você precisa esperar, diga isso na página ("Você será redirecionado em 10 segundos"), e inclua sempre o link para que as pessoas possam ir no seu próprio ritmo.
Erros comuns
- Um loop de redirecionamento. Duas páginas que fazem refresh uma para a outra jogam o leitor de um lado para o outro para sempre. Verifique para onde a página de destino manda as pessoas.
- Uma URL relativa que aponta para o lugar errado.
url=new-pageé resolvida a partir da URL atual, então de/docs/oldela vai para/docs/new-page. Use um caminho completo comourl=/new-pagena dúvida. - Nenhum link de alternativa. Sempre adicione um link normal para a página nova no body.
- Usar
location.hrefpara redirecionar. O botão voltar então leva a um loop de redirecionamento. Uselocation.replace. - Usar meta refresh quando você controla o servidor. Configure um 301; é mais rápido e mais claro para qualquer ferramenta.
Perguntas frequentes
Como redirecionar uma página HTML para outra?
Adicione <meta http-equiv="refresh" content="0; url=https://example.com/new"> ao <head> da página antiga, e um link normal para a página nova no body como alternativa. Se você controla o servidor, um redirecionamento 301 é melhor.
Como redirecionar depois de 5 segundos no HTML?
Coloque antes do ponto e vírgula o atraso em segundos: <meta http-equiv="refresh" content="5; url=https://example.com/new">. Avise o leitor na página de que ele será redirecionado e dê a ele um link.
Como fazer uma página se atualizar sozinha?
Use um meta refresh com atraso e sem URL: <meta http-equiv="refresh" content="30"> recarrega a página a cada 30 segundos. Ele recarrega a página inteira e interrompe o leitor, então, para dados ao vivo, atualizar só uma parte da página com JavaScript costuma ser melhor.
Um redirecionamento com meta refresh é ruim para o SEO?
O Google o segue: um meta refresh instantâneo (atraso 0) é tratado como um redirecionamento permanente, e um com atraso como temporário. Um 301 no servidor continua sendo o jeito recomendado, porque é mais rápido e todo rastreador e navegador o entende.
Como redirecionar com JavaScript?
Use location.replace('https://example.com/new'). Ele substitui a página atual no histórico, então o botão voltar não retorna à página que redirecionou. location.href = url também funciona, mas mantém a página antiga no histórico.