3 dicas imperdíveis com htaccess para você evitar conteúdo duplicado em seu site

Zebra Martyn Madagascar
  • 30 de out de 2014
  • 5391 Visualizações
  • 10 Comentários

Otimizar um site para evitar o conteúdo duplicado é uma questão crucial para os especialistas em SEO.

Mas, este tema também deve ter a sua atenção como desenvolvedor web. Se liga!

Muitos afirmam que o conteúdo duplicado é sempre um vilão na questão de otimização de páginas web. Mas, eu não irei entrar neste mérito agora, afinal, o foco do post é apenas tratar de algumas técnicas para evitar o conteúdo duplicado e não da teoria em si.

Se você tiver curiosidade, poderá acessar o site da Agência Mestre e ver um conteúdo completo sobre conteúdo duplicado.

Para que seja possível a implementação destas dicas é necessário que o seu servidor Apache já possua o módulo mod_rewrite ativado.

mod_rewrite e o .htaccess são usados em conjunto para que seu site tenha a possibilidade de apresentar URLs semânticas e amigáveis ao público.

Antigamente era mais comum encontrar sites que possuem endereços como www.meusite.com.br/index.php?id=1Hoje em dia, isso já está totalmente em desuso. É muito mais interessante utilizar um endereço assim: www.seusite.com.br/meu-primeiro-post, concorda?

Bem, considerando que você já fez as configurações necessárias para que o arquivo .htaccess funcione corretamente, apresento as minhas dicas utilizadas no meu dia-a-dia.

1. Retirar barra (/) no final da URL

Um endereço www.meusite.com.br e www.meusite.com.br/ são diferentes e se possuírem o mesmo conteúdo, é sim conteúdo duplicado. Então, para evitar isso utilizo o seguinte código para que sempre retire a barra no final do endereço.

RewriteCond    %{HTTP_HOST} !^\. [NC]
RewriteRule    ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L]

2. Inserir o www, caso não possua

Um endereço www.meusite.com.br e meusite.com.br são, também, endereços diferentes e é considerado como conteúdo duplicado caso eles exibam o mesmo conteúdo. Então, para evitar isso utilizo o seguinte código:

RewriteCond    %{HTTP_HOST} !^www\.
RewriteRule    ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

3. Retirar index.php, caso exista

Se você acessar um site com www.meusite.com.br e www.meusite.com.br/index.php e ambos exibirem o mesmo conteúdo, também será considerado como conteúdo duplicado. Neste caso, o problema é resolvido da seguinte forma:

RewriteCond    %{THE_REQUEST} ^.*/index.php
RewriteRule    ^(.*)$ / [R=301,L]

Pronto! Assim você garante que seu projeto sempre irá ser acessado sem barra no final (/), sempre com www e evita que a home seja acessada via /index.php.

Aqui, segue o código completo do meu .htaccess utilizados na maioria dos meus projetos.

<IfModule mod_rewrite.c>
    RewriteEngine on

    #redirect if exist end slash
    RewriteCond    %{HTTP_HOST} !^\. [NC]
    RewriteRule    ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L]

    #redirect if does not exist www
    RewriteCond    %{HTTP_HOST} !^www\.
    RewriteRule    ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

    #redirect if exist index.php
    RewriteCond    %{THE_REQUEST} ^.*/index.php
    RewriteRule    ^(.*)$ / [R=301,L]
</IfModule>

Gostou? Compartilhe. Tem uma idéia melhor? Comente abaixo e ajude a deixar o post mais atrativo!

TAGS: htaccess, conteudo duplicado, mod_rewrite, servidor apache, website, tiagomatosweb

Deixe um comentário


10 Comentários

    • boa noite thiago, muito boa suas dicas, porém ao inserir esse código, removeu a barra do final porém nao consigo acessar o backend, ex: digito www.simbah.br/admin ele é redirecionado para www.simbah.com.br , teria alguma dica pra sumir a barra do final e continuar acessando o backend?

      • Opa Rodrigão, nesse caso creio que seja sua applicação que esteja redirecionando, não? Qual backend você utiliza?

    • Cara+...demais suas dicas. Que bom encontrar conteúdo de qualidade e bem explicado. Um forte abraço! :)

      • aVleu meu caro! Fique sempre conectado e se possível, curta a minha página no facebook www.facebook.com/tiagomatosweb, me segue também no instagram www.instagram.com/tiagomatosweb, e também no twitter www.twitter.com/tiagomatosweb... ABS

    • Ola Tiago, como faço para usar o rewrite quando uma pessoa escreve algo por exemplo www.meusite.com.br/naoexisteissoaqui ir para www.meusite.com.br/ ???

      • Olá Fabio, você pode usar o Redirect:

        Redirect 301 / http://mt-example.com/

    • Olá Tiago! Quando insiro o site sem o www ele redireciona para o site corretamente porém no final da url ele esta acrescentando duas barras //

      • Oi Alexandre, coloca seu código no pastbin ou no gist para eu dar uma olhada. Está usando algum framework?

    • Gostei das dicas! Fiquei sabendo da existência do seu site lá na comunidade cake brasil. Vc é fera. Seu conteúdo é muito útil!

      • Olá Whélynton, obrigado meu caro! Fico feliz em saber que minhas dicas estão sendo úteis para você! Apareça sempre que possível. Abs.