Diretrizes, Dicas, Tabelas, Scripts para se Fazer Redirecionamentos Permanentes (301) em Diversos ServidoresO que é redirecionamento? Redirecionamentos feitos pelos suportes Redirecionamentos feitos no painel do site Alteração manual em servidor web Redirecionamentos em servidores Windows Redirecionamentos de arquivos em ASP Redirecionamentos de arquivos ASP dinâmicos Redirecionamentos ASP.NET Redirecionamentos arquivos html ou htm Redirecionamentos com uso de Meta Refresh Uso de outro redirecionamentos rápido por javascript Uso do programa ISAPI Rewrite (Servidores Windows) Redirecionamentos de arquivos em PHP Redirecionamentos de arquivos em Coldfusion Redirecionamentos em servidores Apache Redirecionamentos com arquivo .htaccess Redirecionamentos de domínio com www para sem www Redirecionamentos com htaccess que redirige página dinâmica em php Redirecionamentos de subdomínio em html Limite no número de instruções no htaccess Onde fica 301 e 302 no htaccess? Redirigir domínio inteiro para a home/página de outro domínio Redirigir um domínio inteiro ou uma página para outro domínio / pasta de outro domínio Redirigir uma URL dinâmica para outra estática Redirigir todos os arquivos de uma pasta php para um único arquivo PHP Redirigir toda uma pasta para outra pasta Redirigir um arquivo html para php Redirigir um subdomínio para a URL Htaccess me diretórios (pastas) Htaccess localizados simultaneamente na raiz e diretórios do primeiro, segundo, etc. nível Redirigir uma URL dinâmica para outra estática Lidando com servidor Apache sem htaccess
Encontre seu script, copie e cole. Fazer redirecionamentos permanentes, também chamados de redirecionamentos 301 ou Redirect 301, ou redirecionamentos temporários (302), é fato corriqueiro na otimização de sites. É mais comum quando o site sofre mudanças estruturais ou de páginas ou de endereços ou de conteúdos. Nesta página a tarefa fica facilitada. Muitas vezes o dono do site só toma conhecimento da necessidade de se fazer um redirecionamento em situações aflitivas, como por exemplo, ao mudar de servidor e ver, logo em seguida, seu site perder posições. Esta página é, sobretudo, para socorrê-lo em tais ocasiões. .O Que É – O redirecionamento consiste na colocação de instruções, em linguagem de máquina, na própria página ou em algum arquivo específico ou no próprio servidores web, pelas quais sites inteiros ou pastas ou arquivos são encaminhados para endereços diferentes. Estas instruções são pequenas e usualmente chamadas de scripts. Elas são colocadas na página que se pretende redirecionar ou em arquivos específicos, chamados arquivos de redirecionamento. Redirecionamento na Página – Em certos servidores a instrução é feita na própria página que se quer redirecionar. O script é colocado no topo da página ou nas meta tags. Arquivo de redirecionamento – Em certos servidores é necessário fazer um arquivo à parte. Nele vai o script, que pode ser uma linha com poucos caracteres, ou uma enorme lista de caracteres. O mais comum desses arquivos é o .htaccess, por ser usado na maioria dos servidores Apache, e o Apache está instalado em cerca de 50% das máquinas. Trabalho Permanente – O trabalho desta página é permanente porque são tantas as variávais envolvidas e tantas as modificações e atualizações feitas nos servidores, que sempre existe algum ajuste ou acréscimo a ser feito. Nesse processo conto com a colaboração voluntária de João Luiz Savioli Filho, do site www.studioserver.com.br, o qual tem longa esperiência com servidores e Hospedagem de Sites e, conseqquentemente, de redirecionamentos. assim como com a colabração de visitantes desta página. Se você desejar ver aspectos teóricos do assunto, consulte os links no final desta página e outros na Internet.
Redirecionamentos Feitos Pelo Suporte Esse redirecionamento consiste em encaminhar uma solicitação ao suporte da hospedagem para que o serviço seja feito. A despeito de parecer uma coisa interessante, em geral traz muita dor de cabeça, posto que a maioria dos serviços de hospedagem oferece suporte deficiente. Há, contudo, uma variação muito desejável: aquela em você faz o redirecionamento normalmente e, em caso de dificuldade, o suporte entra para resolver o problema. Redirecionamentos no Painel do Site Oferecer redirecionamento pelo painel começou por volta de 2006 e foi tão bem recebido que sua oferta, pelos serviços de hospedagem, está cada vez mais freqüente. E de fato eles nos livram de muitas dores de cabeça. Em geral isto é encontrado numa área de gerenciamento ou serviços. Veja um exemplo bastante ilustrativo de redirecionamento num painel: Observe que o nome do seu domínio entra no lugar de exemplo. Observe ainda que: -- basta você
colocar adiante da sua URL básica o endereço antigo ou que deve desaparecer; Se houver algum erro na grafia, o progrmama rejeita o redirecionamento. Em outra página vai aparecer este e outros redirecionamentos que você fez. Nela você pode apagar qualquer um, que por ventura apresente erro. simples, não é? Desvantagem – Quanfo o redirecionamento envolve alguma complexidade, este serviço pode não ser possível em certos painéis. Advertência – Alguns serviços de hospedagem de sites oferecem esse redirecionamento mas, quando você precisar, pode ter a desagradável surpresa de só poder fazê-lo para outro site. Por vezes isto é uma limitação do plano de hospedagem e se resolve com a mudança no plano. Dica: Ao contratar um serviço ou plano de hospedagem que ofereça redirecionamentos via painel, procure saber o alcance desse redirecionamento e se há suporte rápido em caso de necessidade. Alteração Manual no Servidor Web Existe uma maneira de se fazer intervenções nos servidores web, inlcusive para os redirecionamentos, que consiste em escrever instruções no próprio servidor, via acesso chamado Shell. É preciso conhecimento específico e muita experiência com servidores para fazer este tipo de intervenção; por este motivo o redirecionamento por esta via não será informado nesta página. Uma variação em certos servidores é o uso de um programa na interface do servidor; nele as operações são mais simplificadas porque se parece com um painel comum, mas é possível fazer mudanças mais complexas ali. Um exemplo disto é o Webmin, um programa que permite a você alterar coisas no servidor sem usar o acesso Shell. Mas este programa não apresenta a mesma facilidade de um painel comum. REDIRECIONAMENTOS EM SERVIDORES WINDOWS Servidores Windows IIS -- ARQUIVOS em ASP: O destino é a página índice do site: O destino é a home: Redirige endereço sem www para com www: <% select case request("id_menu") response.redirect(link) Esta seqüência foi colocada num arquivo chamado conteudo.asp, na pasta onde estavam os endereços que seriam mudados. Observe que cada URL é representada pela terminação, precedida de informações como menu, case, link. Este redirecionamento depende de uma articulação com o banco de dados, no qual se acham várias definições dos parâmetros do script. Todos os arquivos foram redirigidos para a raiz do site. Entretanto, quando se trata de redirecionar URL gerada dinâmicamente para URL dinâmica, as coisas ficam mais complicadas, como veremos.
-- ASP.NET: <script runat="server"> -- ARQUIVOS em HTML ou HTM: --- Uso de Meta Refresh – O redirecionamento pode ser feito por uma meta tag chamada Meta Refresh. Ele é um redirecionamento rápido. Ver discussão sobre meta refresh. Atributos da meta tag:<meta http-equiv="refresh" content="0; url="http://www.nomedodominio.com.br/index.html"> Content é o tempo em segundos que levrá para haver refresh. No caso, 0 segundo. A página de destino pode ficar com URL absoluto (como no exemplo acima), ou relativo, assim: . <meta http-equiv="refresh" content="0; url=index.html"> --- Uso de outro redirecionamento rápido por javascript Um outro redirecionamento rápido consiste num pequeno scrip em qualquer parte do head, mas recomenda-se colocá-lo bem no começo, antes mesmo do título ou qualquer outra meta tag. O script é o seguinte: <script language="javascript"><!-- Aqui também pode-se usar URl absoluto ou relativo. --- Uso de um programa chamado ISAPI Rewrite. (Pode ser usado também em página asp)
Este programa permite praticamente todos os redirecionamentos, mas é bastante complexo e de difícil assimilação. Redirecionar arquivo – Veja o script que segue, o qual permite redirecionar um arquivo da raiz para uma pasta do mesmo site. [ISAPI_Rewrite] RewriteCond Host: ^dominio\.com.br Redirecionar domínio sem www e extensão html – Pelo script que se segue, você pode fazer duas coisas: redireciona http://dominio.com.br (observe que não tem www) para http://www.dominio.com.br, e ainda, a terminação index.html para uma barra no final. [ISAPI_Rewrite] RewriteCond Host: ^dominio\.com.br [I,RP] - I significa ignorar a situação anterior do script; RP significa redirecionamento permanente. Se desejar fazer um redirecionamento temporário, use [R]. [RP] significa redirecionamento permanente, mas leva em consideração a situação anterior do script. Se desejar fazer um redirecionamento temporário, use [R]. Redirecionar domínio sem www, extensão html e arquivo, para domínio com www e sem index.htm, acrescido do redirecionamento de um arquivo qualquer para uma pasta: RewriteCond Host: ^dominio\.com.br Elimina uma pasta e todo o seu conteúdo e redirige para um nível abaixo: Elimina uma pasta e redirige o arquivo index para a raiz: Redirige um domínio para outro mas mantém o link ativo funcionando: Redirigir uma página antiga asp para uma página nova asp: RewriteRule /pagina-antiga.asp http://www.dominio. com /pagina-nova.asp [I,O,RP,L] RewriteCond Host: ^dominio\.com.br -- ARQUIVOS em PHP: Domínio sem www é redirigido para dominio com www: <? Domínio sem www é redirigido para domínio com www e sem extensão html: <? será redirecionado para http://www.dominio.com.br/ É possível, no mesmo arquivo index.php, fazer vários redirecionamentos no site. Os arquivo PHP podem ser redirecionados por script inserido no topo da página: O destino é a página índice do site: O destino é um arquivo numa pasta chamada B: -- ARQUIVOS em COLDFUSION: O destino é outro domínio: <.cfheader statuscode=”301″ statustext=”Moved permanently” / > Colocar a instrução no topo da página antes de qualquer outra coisa. O destino é um arquivo dentro de uma pasta do próprio site: <cfheader statuscode=”301″ statustext=”Moved permanently” /> Colocar a instrução no topo da página antes de qualquer outra coisa. REDIRECIONAMENTOS EM SERVIDORES APACHE -- ARQUIVO HTACCESS: Um servidor Apache é, na essência um programa instalado numa máquina e que executa muitas funções. O Apache precisa ser configurado para que os redirecionamentos sejam feitos por meio de um arquivo que se chama htaccess; sua terminação é em txt , ele é grafado com um ponto antes, assim: .htacess.txt. O nome deriva de hipertext access, ou seja um arquivo de acesso. Neste arquivo colocamos os scripts ou códigos. Os scripts têm aplicações diversas, mas aqui abordaremos apenas aqueles que têm aplicação nos redirecionamentos em servidores Apache. Outra característica importante desses arquivos é a possiblidade de mudarmos a configuração do servidor de forma descentralizada. Alterar configurações do Apache (ou qualquer outro servidor) é tarefa complexa que requer tempo e conhecimento específico. Dizemos que esta é uma alteração centralizada. Mas o Apache pode ser configurado de forma a seguir as instruções do arquivo htaccess. Com isso, ao invés de mexer no núcleo do servidor, mexemos apenas num aquivo muito simples, descentralizado. Como fazer o arquivo htaccess – O arquivo é feito com um bloco de notas vazio. Ele deve ser transferido para o seu editor de site, e colocado na raiz do site, e por fim, receber o nome de .htaccess.txt. (Observe o ponto antes do h). Depois de receber os scripts ele deve ser carregado para o servidor. Alguns sistemas operacionais não permitem carregar um arquivo precedido de um "." simplesmente - neste caso você deve colocar qualquer coisa antes do ponto, carregar e depois apagar a qualquer coisa que escreveu antes do ponto. Ferramenta poderosa – "O arquivo htaccess é uma ferramenta poderosa" – eu li esta informação muitas vezes quando tomei contato com esse recurso. Com o tempo, após muitas experiências com vários redirecionamentos, vi que tinham razão os que diziam isso. Ademais, é, na maiora das vezes, muito simples. Ele não funciona num servidor Windows. Exemplo de código no arquivo htaccess em que um domínio sem www é redirigido para o mesmo domínio com www: (Escreva no bloco de notas em branco que foi intitulao de ,htaccess.txt:) RewriteEngine On RewriteCond %{HTTP_HOST} ^dominio.com.br [NC] Observe que: Importante: Esse script, e outros que se seguem, pode não funcionar corretamente por vários motivos. Antes de investigar os motivos e corrigi-los, você pode tentar o script seguinte: RewriteEngine On Outro exemplo de código no arquivo htaccess, semelhante ao anterior, acrescido de uma linha de código: RewriteCond %{HTTP_HOST} ^dominio.com.br [NC] Redirecionamento de um arquivo para outro usando código sem alterar apresentação da home: RewriteEngine On Este é um código de uma linha com instruções mais completas. Redirecionamento de um ARQUIVO para outro usando código mais suscinto: RewriteEngine On Neste caso o redirecionamento é feito sem a instrução contida na letra L da situação anterior. .
RewriteEngine On Redirect 301 /pastaA/ http://www.dominio.com.br/pastaB/ Neste caso a página que vai se abrir será a index, não importa se é em html, php, asp, etc. Redirecionamento de uma PASTA para outra usando código completo: RewriteEngine On RewriteRule ^/pastaA/$ http://www.fiber.ind.br/pastaB/ [L,R=301] Redirecionar um domínio para outro domínio: Options +FollowSymLinks Outro exemplo de código no arquivo htaccess, semelhante ao primeiro exemplo acima - a diferença é que na terceira linha do código você redirige a página inicial com index para sem index: RewriteCond %{HTTP_HOST} ^dominio.com.br [NC] Observe que a página index deste exemplo tem extensão html, mas ela pode ter qualquer extensão - html, htm, php. Este redirecionamento é necessário em algumas situações, particularmente no Google. Não se sabe porque, na área de webmasters, ele começa a informar que há duplicidade de meta tags e de títulos no site, e quando você vai ver, trata-se de / e /index.html (htm, php). Se você não fizer o redirecionamento, o site poderá perder posições por causa deste simples detalhe. Ainda não está claro para mim o que leva a isto porque num conjunto de sites acompanhados na área de webmasters, o aviso aparece para alguns sites e não aparece para outros. Se o servidor for Windows, o redirecionamento precisa ser feito também (por outro processo, naturalmente). Looping – O redirecionamento RewriteRule ^index.html / [R=301,L] em geral gera looping, ou seja, um endereço fica apontando para o outro indefinidadmente e a página não é exibida.
Código no arquivo htaccess, que redirige o domínio com www para SEM www: RewriteCond %{HTTP_HOST} ^www.dominio.com.br [NC] Código no arquivo htaccess, que redirige o domínio com www para outro domínio com WWW: RewriteCond %{HTTP_HOST} ^www.dominio.com.br [NC] Neste caso você deve transportar todos os arquivos do domínio atual para o novo domínio. Se não funcionar, tente: RewriteEngine On Código no arquivo htaccess, que redirige o domínio com www para SEM www: RewriteCond %{HTTP_HOST} ^www.dominio.com.br [NC] Código no arquivo htaccess, que redirige o domínio com www para novo domínio com www e, ao mesmo tempo, redirige o atual sem www para o novo com www: RewriteEngine On Os arquivos devem ser transferidos do atual para o novo, como informado acima. Observe que é possível duas instruções RewriteCond. Código no arquivo htaccess, que redirige o domínio sem www para novo domínio sem www e, ao mesmo tempo, redirige o atual com www para o novo sem www: RewriteEngine On Código no arquivo htaccess que redirige PÁGINA DINÂMICA em php de loja virtual, de um produto de uma categoria para outra categoria, dentro do mesmo site: RewriteRule ^/produto.php?cod=x&nome=nome-do-produto&cat=nome ou número da categoria http://www.nome-dominio.com.br/produto.php?cod=x&nome=nome-do-produto&cat=nome ou número da outra categoria&%1 [L,R=301] Observar que tem estes símbolos logo depois da categoria: &%1 Este redirecionamento funciona muito raramente, pois os robots lidam mal com esses símbolos de URLs dinâmicas. Até mesmo a navegação dos robots por elas, assim como a indexação das mesmas, é precário. A alternativa é tranformá-las em URLs amigáveis aos robots, ou estáticas. Código no arquivo htaccess que redirige SUBDOMÍNIO em HTML para o domínio com www: RewriteEngine On
Código no arquivo htaccess que redirige, sucessivamente, SUBDOMÍNIO em HTML para o domínio com www, e domínio sem www para domínio com www: RewriteEngine On
RewriteCond %{HTTP_HOST} ^dominio\.com\.br Observe que R=permanent é o mesmo que R=301. Quando o access não funciona ou dá instabilidades nos redirecionamentos: Esta é uma situação muito complicada para quem não tem acesso ao servidor e suas configurações. Isto pode ocorrer em qualquer sistema operacional da família UNIX. Como proceder?
Limite no número de instruções: RewriteOptions MaxRedirects=n
Exemplo de arquivo htaccess com mais de 10 instruções; digamos que sejam 14: RewriteCond %{HTTP_HOST} ^dominio. com.br [NC] Vários comandos numa única linha: Note: Onde fica o 301 ou o 302? Nos exemplos que se seguem, fica implícito que no arquivo htaccess existem instruções iniciais, como nos exemplos acima. Redirigir um domínio inteiro para a home de outro domínio: Redirigir um domínio inteiro para uma página de outro domínio: Redirigir um domínio inteiro ou uma página do mesmo para outro domínio ou uma página de outro domínio: Uma URL dinâmica para um arquivo estático: Todos os arquivos em php de uma pasta para um único arquivo php: Toda uma pasta para outra pasta: Neste caso, os arquivos contidos na pasta antiga são também redirecionados para os arquivos respectivos na pasta nova. Se por acaso, a pasta antiga contiver arquivos que não aparecem na pasta nova, os redirecionamentos serão feitos, mas darão erro 404. RewriteRule /pastaA/arquivoA.html http://www.domínio.com.br/pastaB/arquivoqualquer.html [R=301,L]
Redirecionamento de Sub-domínio: 301 de um Sub-domínio para o URL Neste caso você quer redirigir um subdomínio do seu domínio para o URL pleno, de sorte que o nome que existe no
subdomínio passe a figurar como uma extensão do domínio.. RewriteCond %{http_host} !^subdominio..seudominio.com.br$ [nc]
O arquivo .htaccess.txt é habitualmente colocado na raiz do site. Nessa colocação podemos fazer todos os redirecionamentos do site, em qualquer nível, ou seja, podemos redirecionar arquivos que se encontram no mesmo nível ou em níveis diferentes. Vejamos inicialmente o redirecionamento de uma URL para outra, ambas no diretório da raiz. O diretório da raiz, ou simplesmente raiz do site, vem representado pela pasta chamada public_html ou httpdocs ou Web, etc, conforme o servidor. Dizemos também que colocamos ali se encontram no primeiro nível. public_html (ou httpdocs) / index.html é redirigido para www.dominio.com.br/ - neste caso toda vez que a página index do site aparecer com index.html no final, será exibido o endereço da home terminando com uma / (barra) Da mesma forma, podemos redirigir um arquivo da raiz para um diretório (pasta). Por exemplo, Redirect 301 /arquivoqualquer.html http://www.dominio.com.br/pastaA/arquivo-a html Nesse caso redirigimos um arquivo (chamado de arquivoqualquer.html) do primeiro para o segundo nível, representado pela pastaA. Podemos fazer o mesmo para um subdiretório: Redirect 301 /arquivoqualquer.html http://www.dominio.com.br/pastaA/pastaB/arquivo-x html Nesse caso dizemos que o redirecionamento foi feito da raiz para um subdiretório ou subpasta. Podemos ter sub-subdiretórios e outras extensões. Arquivo htaccess localizado em um diretório do primeiro, segundo, terceiro, etc. nível Há situações em que o arquivo na raiz fica muito grande ou não funciona bem. Podemos deixá-lo com alguns redirecionamentos que envolvem o primeiro nível e fazer mais um ou dois, três, etc. arquivos htaccess nos diretórios. Por exemplo, se localizado na pastaB:Redirect 301 /pastaA/pastaB/arquivo-x html http://www.domínio.com.br/pastaC/arquivo-alfa.html Nesse caso um arquivo do terceiro nível (arquivo-x.html foi redirecionado para outro arquivo (arquivo-alfa.html) situado num diretório (pastaC) do segundo nível. O arquivo htaccess colocado em um diretório qualquer, redireciona para níveis mais altos ou mais baixos, exceto para a raiz. Neste site temos um arquivo htaccess na raiz e outro na pasta do blog. Neste segundo colocamos apenas os redirecionamentos envolvendo arquivos do blog, o que dá mais agilidade e eficiência operacional, particularmente por serem em php. -- APACHE SEM HTACCESS: A impossibilidade de uso do arquivo htaccess em servidores Apache é uma situação que beira ao absurdo, mas ocorre em alguns servidores, especialmente em algumas revendas de hospedagem. Vejamos como podemos contornar algumas situações. Arquivo PHP, com domínio sem www é redirigido para com www - colocar a seguinte instrução no topo da página: <? Arquivo PHP, é redirigido para outro dentro do site (instrução no topo da página): <? Arquivo PHP, é redirigido para outro dentro de uma pasta do site (instrução no topo da página): <?
Julho, 2008 |