Redirecionamento Permanente / Redirecionamento 301 de URLs em Servidor Windows
Ruy Miranda O redirecionamento permanente ou 301 de URLs/páginas, é necessário, assim como o temporário, para a boa otimização de certos sites. Contudo, trata-se de tarefa pouco compreendida e por vezes complexa. As dificuldades aumentam com o tamanho e certas características do site, e ainda, com a existência de dois sistemas, um aplicado aos servidores Apache e outro aos servidores Windows. Em algumas situações, as instruções para o Apache se parecem com um segmento de um hieróglifo. Já as usadas no Windows são mais simples e mais lógicas, embora, como o Apache, não facilite a vida do otimizador quando o site é mais complexo. Aqui eu mostro algumas instruções que resolvem os problemas da maioria dos sites hospedados em servidores Windows. Estes redirecionamentos apresentam algumas diferenças em função das páginas serem em asp ou em html ou em ambos. Páginas em ASP – A página index num servidor Windows é, por convenção, uma página intitulada default.asp. Tal página pode existir tanto na raiz do site e, neste caso é a página index do site, como em pastas. Assim, pode haver www.nomedodominio.com.br/default.asp e www.nomedodominio.com.br/pastaqualquer/default.asp Para facilitar a compreensão, vou dar exemplos de redirecionamentos em páginas Asp. 1. Um dos redirecionamentos mais necessário é o do domínio do primeiro nível (.com.br, .net, .org, etc) sem www para domínio com www. Por exemplo, http://nomedodominio.com.br para http://www.nomedodominio.com.br Para isto, colocamos na página default.asp existente na raiz, a seguinte instrução: <% Select Case URL Case "nomedodominio.com.br" End Select Nota: As informações sobre o código do html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> foram colocadas para mostrar o topo da página a que me referi. O efeito é o mesmo se colocamos /default.asp, como a seguir: <% Select Case URL Case "nomedodominio.com.br" End Select Pode-se usar também uma outra formulação do redirecionamento, com o mesmo efeito, colocado entre as tags <head> </head> e que é a seguinte: <% 2. Instrução em que os redirecionamentos devem ser sempre no mesmo nível. Por exemplo, pode-se redirecionar uma página que se encontra na raiz para outra, também na raiz, mas o redirecionamento não funciona se for da raiz para uma pasta e vice-versa. O redirecionamento a seguir não funciona: <% URL = Request.ServerVariables("SERVER_NAME") Select Case URL Case "www.nomedodominio.com.br/pastaqualquer/default.asp" End Select <% URL = Request.ServerVariables("SERVER_NAME") Select Case URL Case "www.nomedodominio.com.br/" End Select <% Select Case URL Case "nomedodominio.com.br" End Select O que se segue também funciona: <% Select Case URL Case "nomedodominio.com.br" End Select Observe que, nestes dois casos, a despeito do URL nomedodominio.com.br ser diferente do www.nomedodominio.com.br/ e do www.nomedodominio.com.br/arquivo.html, eles, a rigor, se acham no primeiro nível. Observe também que, por ser no mesmo nível, a página pode ser redirecionada para outra em html. <% Ela se aplica também quando o destino é html: <% Nota: Este tipo de instrução, em que aparece explicitamente o status da página como redirecionado permanentemente (301 Moved Permanently) é importante. A outra instrução, citada acima, pode ser interpretada pelo servidor como redirecionamento temporário e, seis meses depois, voltar a exibir a página antiga. 4. Podemos redirecionar dois ou mais domínios ao mesmo tempo, desde que tenham o mesmo destino. Exemplo: <% Select Case URL Case "nomedodominio.com.br","www.nomedodominio.com/" End Select <% Select Case URL Case "nomedodominio.com.br/pastaqualquer/" End Select <meta http-equiv="refresh" content="0; url=http://www.nomedodominio.com.br/index.html"> No servidor Windows, o URL que termina em index.html funciona como um arquivo qualquer, mas diferente de default.asp. Nesse redirecionamento Se estamos na página que corresponde ao arquivo 1 e queremos redirecioná-la para o arquivo2, escrevemos: <meta http-equiv="refresh" content="0; url=http://www.nomedodominio.com.br/arquivo2.html"> Tanto faz se o redirecionamento está sendo feito em URLs de arquivos/páginas situados na raiz do site ou em pastas e sub-pastas. Esta instrução tem a vantagem de permitir redirecionamentos em níveis diferentes, partindo de páginas asp ou html e direcionadas para páginas asp ou html. Mas ela não tem como ser aplicada ao caso de dominio.com.br redirigido para www.dominio.com.br/ Notas: Tal flexibilidade torna este redirecionamento muito usado por hackers e por programas maliciosos. Em conseqüência, é mal-visto pelos mecanismos de busca, especialmente o Google. Há comentários de que seu uso pode gerar punição. Por isto, informe-se mais sobre o assunto, se deseja utilizá-lo. Veja o que é dito no Google a respeito Páginas em ASP e HTML – Um site pode ter as duas, o que é mais comum, e ainda, php e html. Este enterecruzamento por vezes torna as coisas mais complexas, e em algumas cirdunstâncias, facilita, como veremos. Página Específica de Redirecionamento – Os redirecionamentos citados até aqui podem também ser feitos de forma coletiva, quando cabível, e então utilizamos uma página default.asp para listar os redirecionamentos. Por exemplo, a página default.asp pode conter as instruções que se seguem. <% Select Case URL Case "nomedodominio.com.br" End Select
<% Select Case URL Case "nomedodominio.com.br","www.nomedodominio.com.br", End Select Observações importantes: A página A vai abrir no arquivo2. Já tive situações em que foi necessário fazer essa ponte. Se mudamos o tempo de refresh, podemos ter alguns efeitos interessantes, mas que são inconveniente para os mecanismos de busca. Podemos também elimar a função tempo e, neste caso, o código fica assim: <meta http-equiv="refresh" content="http://www.nomedodominio.com.br/arquivo2.html"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> Observe que o esqueleto foi usado porque a única maneira de fazer esta instrução funcionar é colocá-la entre <head> e </head>. O URL da página é normal e ela só não tem conteúdo. Como redirecionar nomedodominio.com.br para www.nomedodominio.com.br/index,html? Usei a seguinte estratégia: <% Observe que o robot do mecanismo de busca recebe, logo no começo da página, instrução para se mover para a página default.asp e, logo em seguida, para se mover desta para a página index.html. Portanto, o redirecionamento permanente ou 301 em servidor Windows pode ser feito com várias instruções. Pode ser feito também em páginas asp, php e html. Ele aumenta de complexidade em função do aumento da complexidade do site. Lamentavelmente a Microsoft não disponibiliza, de forma ordenada, informações que respondam a todas as situações de redirecionamento. Embora elas sejam possíveis, precisamos quebrar a cabeça para executá-las. Flexibiliadade do Servidor Windows IIS – O servidor Windows IIS 6.0 (o 7.0 se acha em versão beta) apresenta uma flexibilidade que resolve muitos problemas de redirecionamento envolvendo a página inicial de um site. Trata-se da possibilidade de você definir qual será sua página inicial. Você pode escolher se será asp, php, html, htm, etc, inclusive com o seunome.html. Por exemplo, a página inicial pode ser cinfigurada para aparecer assim: www.seudominio.com.br/seunome.html. Mas, você, naturalmente, não vai fazer isto. Entretanto, tal habilidade do servidor IIS permite que você defina, por exemplo, que o site será todo em html. E como fazer o redirecionamento do URL sem www, evitando aquelas voltas todas acima citadas? Como fazer esse redirecionamento de forma a apresentar a página apenas com uma barra(/) no finai, ao invés de /index.html? Uma solução consiste em habilitar arquivos php no servidor, e colocar no site uma página index.php (além da página index.html). Na página index.php colocamos a seguinte instrução: <? E aí, quando alguém digitar sua home, com ou sem www, com ou sem / , ela será apresentada assim: .com.br/, o que corresponde à página index.html. Isto é uma operação muito simples quando temos acesso ao servidor IIS e podemos configurá-lo. Em geral, nos serviços de hospedagem compartilhada, que é a usada pela imensa maioria dos usuários, não é possível esse acesso. E, por outro lado, a maioria das empresas de hopedagem não habilitam o php no servidor IIS e tampouco atendem seu eventual pedido de colocar, complementarmente, a página de abertura do site como index.php. Entendemos o motivo: a tarefa é "muito complexa", posto depender, no primeiro caso, de marcar um círculo e, no segundo, escrever index.php e clicar... Mas lembre-se: o servidor IIS precisa comportar php; se não comportar, dependendo de certas particularidades dele, e se você tiver de redirecionar página html para página html, em hospedagem compartilhada, precisará de duas coisas: Fevereiro/2007 |