{+}
Olá Caros Assinantes,
Neste artigo iremos abordar um tema que tem aparecido muito no nosso sistema de perguntas e respostas (Q&A), que é a canonização e re-escrita de URLs e ainda iremos comentar quando queremos redirecionar a index para nosso domínio.
Situação Atual
Temos um domínio mestreseo.com.br, quando acessamos tanto mestreseo.com.br, quanto www.mestreseo.com.br recebemos o código de retorno 200. Para piorar ainda mais nossa situação quando acessamos www.mestreseo.com.br/index.html também recebemos 200, então temos 3 URLs com o mesmo conteúdo.
Objetivo
Para resolver nosso problema, devemos canonizar nosso domínio, assim toda e qualquer URL que for acessada sem o www, seja mestreseo.com.br/pagina1.html quanto mestreseo.com.br/diretorio/pagina2.html deverão ser redirecionadas para www.mestreseo.com.br/pagina1.html e www.mestreseo.com.br/diretorio/pagina2.html respectivamente.
Além disso não podemos esquecer nosso index.html, mas no caso dele, é um redirecionamento diferente, onde o index será redirecionado para nosso domínio.
A Técnica
Utilizando o mod_rewrite do Apache (são regras simples, podem ser adaptadas para outros servidores facilmente) faremos os redirecionamentos comentados na seção objetivo, e o conteúdo do nosso .htaccess na raiz do site será o seguinte:
1. RewriteEngine on 2. rewritecond %{http_host} ^mestreseo.com.br [NC] 3. rewriterule ^(.*)$ https://www.agenciamestre.com/$1 [r=301,NC,L] 4. 5. rewriterule ^index.html$ https://www.agenciamestre.com/ [r=301,NC,L]
Vamos lá para entender o que estamos fazendo aqui:
- Na linha 1 habilitamos o mecanismo de re-escrita nesta pasta (raiz do site);
- Na linha 2 criamos uma condição que toda vez que nosso site for acessado sem www. (o caractere ^ significa começo de linha);
- Na linha 3 indica que será feito o redirecionamento da URL sem www, para a url com www quando a condição da linha 2 for satisfeita;
- Na linha 5 apenas fazemos um redirecionamento do arquivo index.html para o domínio.
Obs: Atenção para o caractere L dentro das condições, ele indica que uma vez que a regra for executa, mais nenhuma regra no arquivo deverá ser processada.
Versão Sem WWW
Você pode estar pensando agora: “Muito bom, exatamente o inverso da minha situação, eu preciso que o www.dominio.com.br seja redirecionado para dominio.com.br”, da mesma forma que o wordpress.com e twitter.com possuem.
Não se preocupe, é só alterar as linhas 2 e 3 para:
2. rewritecond %{http_host} ^www.dominio.com.br [NC]
3. rewriterule ^(.*)$ http://dominio.com.br/$1 [r=301,NC,L]
e analogamente a linha 5 para:
5. rewriterule ^index.html$ http://mestreseo.com.br/ [r=301,NC,L]
Conclusões
De uma forma bem simples, conseguimos resolver o problema de ter a nossa index sendo acessada por 3 URLs diferentes e o domínio esta perfeitamente canonizado para todas nossas URLs.
Espero que esta dica seja útil para vocês e caso tenham alguma consideração e/ou dúvida só deixarem nos comentários, e esperem por mais dicas sobre redirecionamento em breve.
Até breve,
Celso
Créditos da Imagem: jypsygen
é interessante substituir o www pela palavra chave de meu site?
ex. ao inves de http://www.ratos.com.br colocar: dedetizadora.ratos.com.br
obrigado.
Até que sim, se você quer rankings em dedetizadora. Ter a palavra no nome do domínio (e não subdomínio) é mais interessante. Mas cuidado com a estratégia de subdomínios, não é só criar dezenas com as keywords que você compete.
testei o codigo com o index.html funciona normal, mas minha index é php e quando mudo para index.php na regra ele para de funcionar até as outras regras de url limpa como faço pra resolver isso ?