Melhor forma de redirecionar de uma página para um outro endereço

Existem algumas formas simples de se redirecionar um site para uma outra url. Esta técnica é útil em várias situações, como por exemplo, voltar para a página de listagem, logo após salvar uma informação.

Vamos para as formas de se fazer; a primeira forma é utilizando o simples HTML, através da tag <meta>, combinada com o atributo http-equiv=”refresh”:

<meta http-equiv="refresh" content="5 url=https://thiagobfiorenza.wordpress.com">

O atributo content=5 é o tempo (5 segundos) de espera para ser redirecionado. Geralmente neste tempo, coloca-se uma mensagem para que o usuário veja, do tipo “O site está sendo redirecionado em 5 segundos. Caso não aconteça clique aqui.”

A segunda solução é a seguinte, utilizando Javascript:

<script type="text/javascript">
location.href = "https://thiagobfiorenza.wordpress.com";
</script>

O único requisito que exige essa forma é que o navegador do usuário possua o Javascript habilitado.

A última e minha preferida para este fim (redirecionar sem espera de tempo) é utilizando o clássico PHP:

header('location:https://thiagobfiorenza.wordpress.com'); die();

O único cuidado que se deve ter para utilizar-se do PHP para o redirecionamento é que este deve vir antes de qualquer código escrito na tela (echos, prints ou códigos HTML). O die() que aparece no final deste código é para garantir que o header() seja processado no exato momento em que foi chamado, e não após todo o processamento da página.

E, como diriam os desenhos do Pernalonga, That’s all Folks (Isto é tudo, pessoal)!

Anúncios

36 comments so far

  1. Diego on

    Boa noite Thiago.

    Concordo com sua colocação.
    Também prefiro o PHP, pois processa no servidor e já redireciona, tornando-se assim, mais rápido.

    Além disso, a versão javascript fica limitada ao equipamento do usuário, ou seja, em alguns casos, não redirecionará o usuário. (caso o usuário esteja com javascript desabilitado).

    []s

    • thiagobfiorenza on

      Olá Diego. Muitas vezes vejo as pessoas utilizando o Javascript para a solução rápida do erro comum “Warning: Cannot modify header information – headers already sent by…” que acontece quando a função do PHP é utilizada de forma incorreta. Portanto, sua colocação é importante, para lembrar que nem sempre o mais rápido e simples é o melhor.

      Obrigado pelo comentário e por contribuir com o objetivo do blog; encontrar de uma vez por todas a melhor forma de se programar nos mais variados tipos de situações.

      Abraços…

  2. Luciano on

    Uma coisa a ressaltar é que nem sempre você vai poder fazer o redirecionamento via PHP.
    Imagine num sistema de login que você precisa executar vários comandos de php antes de fazer o redirect, é impossível você usar o header(), exatamente porque você já executou algumas coisas na página (consulta no banco, criptografia, anti sql-injection, entre outros) e fica impossível de usar o header().

    Logo, essa sua citação “Muitas vezes vejo as pessoas utilizando o Javascript para a solução rápida do erro comum “Warning: Cannot modify header information – headers already sent by…”” está errada, pois nesses casos não foi utilizado o javascript para uma “solução rápida”, e sim porque ela é a forma correta de fazer o redirect (já que o header() não poderá ser usado).

    Claro que quando alguém recebe o Warning do header(), é porque ela o usou erroneamente, mas isso não implica que usar o javascript nesses momentos é inapropriado.

    Abraços

    • thiagobfiorenza on

      Justamente por este motivo eu disse que muitas vezes e não sempre hehe… Mas, com certeza sua colocação está correta. Há situações que apenas o JavaScript possibilita uma funcionalidade e seu uso é correto. No entanto, sempre que possível, é importante evitá-lo, ou fazer uma forma alternativa para usuários que não possuam JS habilitado.

      Valeu…

  3. Diego on

    Nem sempre… Eu posso utilizar qualquer comando PHP acima de um Header, o que não é permitido é ter alguma saída (echo, print, etc…). Só ocorrerá erro, se alguma informação for “escrita” na página antes do Header, caso não tenho nenhum comando de escrita (echo, print, etc…) e nenhum erro no script, o Header pode ser utilizado.

    • thiagobfiorenza on

      Obrigado pelo complemento Diego, mas não foi o que eu escrevi neste trecho: “O único cuidado que se deve ter para utilizar-se do PHP para o redirecionamento é que este deve vir antes de qualquer código escrito na tela (echos, prints ou códigos HTML)” ??

      Abraços…

  4. Diego on

    Sim, foi isso. Eu apenas disse que sabendo programar, o Header é a melhor opção.

  5. Tarcizio on

    Obrigado pelo post, me valeu no momento oportuno.

    Parabéns pelo trabalho.

  6. Tiago Martins on

    Tiagão to com um problema usando esse código ai…assim, a página se da em 2 quadros usando frames, preciso com que esse comando ai redirecione não só um dos quadros, mais que carregue a página por inteiro…como um target “_top”…sera q tem como ?

    • thiagobfiorenza on

      E ae xara!! Se entendi bem seu problema, ele pode ser resolvido facilmente com um simples código javascript:

      <script type="text/javascript">
      top.location = "https://thiagobfiorenza.wordpress.com/";
      </script>
      

      Vê se isso te ajuda… Abraços e sucesso garoto!

  7. Juliana Mendes on

    eu gostaria de redirecionar a pagina wordpress para outra tem como?

    • thiagobfiorenza on

      Juliana, se o Sergio Ronei (que é mestre de SEO e de WordPress) disse aí logo abaixo, então tá dito hehe! O WordPress realmente tem excelentes plugins para as mais variadas situações. Dê uma pesquisa e enriqueça seu blog.

      Abraços…

  8. Sergio Ronei on

    Olá Juliana,

    Existe um plugin especialmente desenvolvido para redirecionar páginas no WordPress.

    O plugin se chama “Redirection”, e pode ser encontrado no endereço abaixo:

    http://wordpress.org/extend/plugins/redirection/

    Parabéns Thiago pelo ótimo post! 😉

  9. Juliana on

    Entendi, no entanto estou a usar wordpress.com

  10. Fernando Mello on

    Olá Thiago.

    Não sei se da certo fazer o que você comentou no meu caso.

    Eu tenho uma página, aonde eu insiro dados como data inicial, data final e escolho a unidade.

    http://www.simsinam.com.br/previlab/relat.php

    Depois que coloco os dados que quero, o sistema gera o relatório de assinatura que preciso conforme o link:

    http://www.simsinam.com.br/previlab/relat.php?dataini=15%2F10%2F2010&datafim=15%2F10%2F2010&select=LIMEIRA1&Gerar=Gerar

    O que eu não estou conseguindo é que a tabela gerada , seja gerada em outra página, sem o cabeçalho.

    Se puder me ajudar eu agradeço.

    Abraços

  11. Sergio Ronei on

    Olá Juliana, tudo bem?

    Infelizmente não é possível fazer redirecionamentos no WordPress.com com plugins pois o mesmo não suporta plugins.

    O WordPress.com também não fornece ftp para acessar os arquivos da sua conta. Se fornecesse, seria possível, editando o arquivo htaccess.

    Neste caso, o que podemos fazer é aguardar até que o wordpress faça alguma atualização e disponibilize uma ferramenta no painel para fazer redirecionamentos.

    Abraços

  12. Juliana on

    muito obrigada pela atenção

  13. madu on

    Tenho um problema de redirecionamento. Tenho um site http://www.meusite.com.br e outros 3 domínios apontando para ela. Queria um script para que quando alguem digita-se http://www.meuoutrosite.com.br e caisse no primeiro fosse redirecionado para outro local. Se digita-se http://www.meuaindaoutrosite.com.br, fosse para outro local. Dá para entender? São redirecionamentos múltiplos, ou seja, se alguém todos chegam no http://www.meusite.com.br, mas precisam ir para locais diferentes. É possível? Agradeço.

  14. Alexandre on

    Opa, otimo post. Mas como faço para redirecionar para uma pagina fora do public_html?

    • Thiago Cardoso Silva on

      Usando qualquer um dos métodos citados acima, basta não se esquecer de por antes do domínio, o protocolo “https://”.

  15. Evaldo on

    Muito bom Thiago! Ótimas dicas!

  16. Ed on

    Olá Thiago
    Como faço para redirecionar como no exemplo abaixo;

    Se http://www.exemplo.br
    Então http://www.exemplo.com.br

    Se http://www.exemplo.br/extensao
    Então http://www.exemplo.com.br\extensao

    Se puder ajudar eu agradeço muito

  17. ooooo on

    header(‘location:https://thiagobfiorenza.wordpress.com‘); die();

  18. Gilson on

    Tiagão, otimo post, parabens!

    Tenho uma duvida…to usando um formulario que envia os dados para um arquivo chamado controle.php, esse arquivo recebe os dados do formulario grava no banco e redireciona para o formulario de cadastro novamente. Gostaria de exibir uma confirmação de cadastro, mas nao estou conseguindo, pode me ajudar?

  19. Marcelino Ribeiro on

    Boa noite.
    Gostei. me ajudou bastante, tava quebrando a cabeça para fazer um redirecionamento.
    Obrigado.

  20. Sei La on

    só uma coisa no sistema do meta se você quer que a pessoa seja redirecionado brutamente com o meta não da por exemplo se você apertar f5 “6 vezes” rapidamente ele não consegue redireiconar

  21. EDSON on

    minha duvida é onde coloco esse codigo aqui header(‘location:https://thiagobfiorenza.wordpress.com‘); die(); no blog para ir ao um dominio cujo seria .tk

  22. Thiago on

    E possivel fazer animação com CSS3. Tem como fazer redirecionamento com CSS? (pois estou usando uma barra loading com CSS e gostaria que ao final dos 100% redirecionasse a pagina.

  23. teste on
  24. Igor on

    Thiago, blza?
    tenho um site que está no ar com o domínio MEUSITE.com.br. Registrei um outro domínio MEUDOMINIO.com.br e queria direcionar este domínio para o site que está no ar. o MEUDOMINIO não tem servidor nem nada, só tá registrado. O que preciso fazer e como fazer? Sou leigo no assunto.
    Obrigado!!!

  25. pixeletra on

    Obrigada!!!!

  26. Alanderson on

    Como checar se a pagina existe antes de redirecionar pra lá?

  27. comodemonstrarempatia on

    Oi, Tiago! Se usa esse código php no arquivo index.html? O código vem antes da TAG HTML? Porque fiz desse jeito e não funcionou.


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: