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.
O 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=1. Hoje 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>