As vezes necessitamos fazer redirecionamentos de URL(s) em nosso domínio web para efetuar tratamentos condicionais de necessidades diversas.
Para isso temos o modulo “rewrite” do apache que efetua esta ação com estrema flexibilidade direto nos arquivos .htaccess do nosso servidor web.
Este assunto é bem extenso e creio que vocês querem um conteúdo mais prático da coisa, então vou postar aqui algumas maneiras configurar o seu arquivo .htaccess para que ele manipule URL(s) no servidor web.
Redirecionando Tudo para um arquivo expecífico
#===========================
# Liga o modulo do apache
#===========================
RewriteEngine on
# Redireciona para o Painel de Controle do Sistema.
RewriteRule (admin)$ /panel.php [L]
RewriteRule (admin/)$ /panel.php [L]
RewriteRule (admin/)(.*)$ /panel.php [L]
RewriteRule (painel)$ /panel.php [L]
RewriteRule (painel/)$ /panel.php [L]
RewriteRule (painel/)(.*)$ /panel.php [L]
# Redireciona tudo para o index.php
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)([?/])$ index.php [L]
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
Redirecionando tudo para um único host
#===========================
# Liga o modulo do apache
#===========================
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.host.com.br [NC,OR]
RewriteCond %{SERVER_NAME} !^www.host.com.br [NC]
RewriteRule (.*) http://www.host.com.br/$1 [R]
Negando acesso a arquivos requisitados por outros sites
#===========================
# Liga o modulo do apache
#===========================
RewriteEngine on
RewriteCond %{HTTP_REFERER} != ""
RewriteCond %{HTTP_REFERER} != !^http://meu-web-site.com.br/.*$ [NC]
RewriteRule \.(jpg|gif|png|swf|js)$ - [F]
Agregando www. a suas requisições
#===========================
# Liga o modulo do apache
#===========================
RewriteEngine on
RewriteCond %{HTTP_HOST} ^meu-web-site.com.br [NC]
RewriteRule ^(.*)$ http://www.meu-web-site.com.br/$1 [r=301,NC]
RewriteCond %{HTTP_HOST} !^www
RewriteRule ^(.*) http://www.%{HTTP_HOST} [R]
Redirecionando tudo vier da porta 80
#===========================
# Liga o modulo do apache
#===========================
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*) http://%{SERVER_NAME}/$1 [R,L]
Redirecionando para outro lugar
Redirect /admin http://www2.meu-web-site.com.br/paine/controle
legal o post, de grande utlidade.
obg
Olá amigo, usei o “Redirect” e também o “301” mas eles bugaram meu site.
Quando vou em um um domínio abc.com mas quero que assim que entre nele seja redirecionado para 1.abc.com, meu sub-domínio, mas depois que fiz isso ele da o seguinte aviso no browser “Redirecionamento incorreto
O Firefox detectou que o pedido para este endereço não será concluído devido à forma que o servidor o está redirecionando.
Este problema algumas vezes pode ser causado pela desativação ou bloqueio de cookies.”,
e quando vou para outras pastas como abc.com/outro/site ele faz o seguinte “abc.com/outro/outro/outro/outro/outro/outro/outro/outro/outro/outro/outro/outro/outro/site” o que da um erro 404. Poderia me ajudar?
Olá Carlos,
Poste o código que utilizou no .htaccess para eu poder analisar! e quem sabe posso lhe dar a solução.
Boa tarde,
Meu site foi criado num construtor que utiliza a linguagem php, porém, estou recriando todas as páginas em HTML. Das 600 páginas do construtor já consegui recriar umas 100 em HTML.
Como devo proceder para fazer o redirecionamento correto dessas páginas antigas em php para as novas em HTML?
Grata, Ana
Olá Ana,
Primeiramente, para fazer o redirecionamento das páginas já existentes para outra cuja a URL seja diferente, você deve emitir na página antiga o status 301 e redirecionar o tráfego desta página para a nova. O Status 301 diz aos mecanismos ou robos na internet que este conteúdo não está mais aqui, que ela agora está em outro lugar.
Uma referência explicativa pode ser encontrada aqui http://www.nacaolivre.com.br/servidor/codigos-de-resposta-http/.
Exemplo em PHP:
< ?php // Está é a página antiga! header( "HTTP/1.1 301 Moved Permanently" ) header( 'Location: http://www.nova-pagina.com.br' ); ?>
Obvio que isto é um exemplo muito genérico, por mais, poste no comentário mais detalhes,
Atenciosamente,
Nação Livre
Olá,
Neste caso então devo utilizar este código em cada uma das minhas páginas antigas que desejo redirecionar, certo?
Minha dúvida é: em que lugar da minha página antiga devo inserir o código? Preciso primeiro limpar a página e deixar somente o redirecionamento?
Grata,
Ana
Ana,
Cada endereço URL, ou seja página precisa ter o seu redirecionamento. Portanto você terá que ver uma forma de automatizar isto para não ficar tão doloroso a implementação deste tipo de redirecionamento.
@Fernando
Fernando,
Consegui fazer os redirecionamentos conforme instruções, porém, notei uma queda nos meus acessos após implementar os códigos.
O que poderia estar causando isso?
Grata, Ana
Olá Ana,
É difícil responder a esta questão sem mais dados em mãos. Seria interessante você usar recursos como Google Analytics, Webmaster Tools também do Google ou outra ferramenta que lhe forneça informações em peso para tomadas de decisão.
Mas, poderia ser um redirecionamento onde os “301 redirect permanently” não estão sendo emitidos corretamente, não informando os mecanismos o que fazer, fazendo com que seu site esteja caindo nas buscas de mecanismos como Google, Yahoo, Bing. Logo os Mecanismos estão buscando ainda pela página antiga!
Como disse é preciso mais informações!
O redirect foi de grande ajuda. Muito obrigado e parabéns pelo post!
Amigo como faço para nessas situações:
http://www.meusite.com.br
http://www.meusite.com.br/
http://www.meusites.com.br/index.php
Sempre redirecionar para:
http://www.meusite.com.br/home/
Se puder me ajudar nisso agradeço muito.
Veja se isto ajuda!
basta colocar em um arquivo .htaccess na raiz do seu dominio “public_html”
RewriteEngine On
RewriteRule ^(.*)$ http://www.meusite.com.br/home/ [R=301,L]
Minha dúvida é a seguinte:
Tenho o diretório unidades- com arquivos html
/unidades-/rio-grande-do-sul.html
/unidades-/rio-de-janeiro.html
e gostaria de redirecionar todas as paginas que estao dentro de /unidades-/ para
/unidades/rio-grande-do-sul
/unidades/sao-paulo
Como procedo?
Estou tentando criar um redirecionamento do “webmaillogout.cgi” para “http://www.dominio.com”, já busquei até em sites internacionais até mensionam alguma coisa mais nada concreto, se poder mim ajuda agradeço.apleoppassure
Estou tendo um problema no diretorio do meu site, para acessa o diretorio: http://www.meu-site.com.br/admin ele sempre vai para a index.php, estou utilizando o seguinte .htacess.
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.+)$ index.php
RewriteRule ^(admin*)? index.php