SEO
URL amigáveis com Mod_rewrite – parte 1

No artigo de hoje falaremos sobre mod_rewrite, que é um módulo para o apache que permite reescrever URLs utilizando Expressões Regulares. Ele é muito útil em vários sentidos, pois pode aumentar o pagerank de seu site em buscadores, torna URLs limpas e inteligíveis, fazendo com que o usuário consiga lembrá-las muito mais rápida e facilmente.
Hoje em dia, com a popularização de assuntos como SEO, usabilidade e acessibilidade, esta prática se tornou comum e está cada vez mais sendo utilizada por grandes portais e sites.
Clean URL
Clean URL, URL Limpa ou URL amigáveis é a mesma coisa. É uma maneira de escrever URLs sem a presença de query strings, somente seu caminho até o destino final. Isso permite que se tenha uma hierarquização e organização dos endereços, entre outros benefícios.
Quais são os ganhos reais
Muitos dos ganhos podem parecer bobos. Mas não são. Com URLs bem definidas:
- Aumenta-se a segurança do site
- Facilita a manutenção do site
- Despreocupação com diretórios e nomes de arquivos
- Facilita a navegação
- Aumenta o pagerank em buscadores
- Pode aumentar o número de visitas/page- views
Antes de qualquer coisa, para que o módulo mod_rewrite funcione, obviamente você deve ter configurado e ativado o módulo no seu servidor Apache como mostra a figura abaixo:
Clique no WAMPSERVER, depois em Apache, Apache modules, e procure por rewrite_module e clique nele e pronto, nosso apache já está habilitado.
Obs: Caso você use o WordPress ou algum sistema que use essa função e ao tentar abrir a página de um erro então crie o arquivo (.htaccess) conforme explicado abaixo.
Por padrão os servidores já vêm com o apache reescrito, caso você perceba o erro contate seu provedor de acesso.
Criando o arquivo htaccess
Crie um arquivo com o nome (.htaccess) (exatamente desta forma), se for com BLOCO DE NOTAS, clique em “Salvar Como” e mude o “Tipo” para “Todos os arquivos” para que consiga salvar com este nome. Se não mudar, “ele salvará com a extensão (.txt)” e não funcionará.
Depois de criado o arquivo corretamente e salvo, mova para a pasta raiz do seu domínio (ou onde queira implantar a reescrita). Em seguida, insira o Código abaixo:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?cod=$1
Entendendo o código:
RewriteEngine On = Ativa o suporte à reescrita
RewriteCond %{SCRIPT_FILENAME} !-f = Não aplica a condição para arquivos
RewriteCond %{SCRIPT_FILENAME} !-d = Não aplica a condição para diretórios
RewriteRule ^(.*)$ index.php?cod=$1 = Regra de reescrita onde qualquer string (.*) após a pasta, onde estiver o .htaccess, será interpretado por index.php passado na variável cod.
Na prática, se você tem uma URL do tipo www.url.com.br/secao/subsecao/, será interpretada por www.url.com.br/index.php?cod=secao/subsecao/. E mais, você não terá limite de níveis para utilizar com as /.
Deste modo, você pode “transformar” uma URL como:
HTTP://www.seudominio.com.br/minhasimagens.php?idAlbum=5&idFoto=80
No endereço abaixo:
HTTP://www.meudominio.com.br/minhasimagens/
Bem mais legível, bonita, fácil de se memorizar e o principal os buscadores tem uma eficácia muito maior sobre elas.
Criando o arquivo principal
Vamos criar nosso index.php, na qual será o responsável por redirecionar as páginas juntamente com o arquivo .htaccess.
<?php $atual = (isset($_GET['pg'])) ? $_GET['pg'] : 'home'; if(file_exists($atual.'.php')){ $pagina = (file_exists($atual.'.php')) ? $atual : 'erro'; }else{ $pagina = (file_exists($atual.'.php')) ? $atual : 'erro'; } require_once("{$pagina}.php"); ?>
Esse código faz o seguinte:
Recebe via GET o nome da página enviado pelo arquivo htaccess e seta seu valor em uma variável, caso não haja valor ele seta a $var com home, sempre.
Feito isso ele vai verificar se aquela $var concatenada com a extensão (.php) existe, se sim ele entra na condição, e monta o nome da url em uma $var com o nome do arquivo, caso não exista ele seta a $var com um valor erro, na qual seria uma página de erro criada por você, por exemplo erro.php, onde você pode mostrar o erro page not found 404 para informar ao usuário que aquela página não existe.
Feito todo o processo e concatenado nossa URL na $var, no final do arquivo requeremos uma página exatamente com o valor setado vindo do GET juntamente da extensão que concatenamos, e assim somos redirecionados para nossa página com sucesso com nossa URL limpa como, por exemplo, “www.suaurl.com.br/contato” em vez de “www.url.com.br/contato.php”.
Perceba que desta forma, a URL fica sem a extensão no fim do arquivo, fazendo com que fique muito mais atraente e escondendo a extensão final, deixando o usuário sem saber ao certo em qual linguagem foi desenvolvido o seu site, e melhor, aumentando um pouco a segurança. É isso mesmo, disse “um pouco” mesmo, pois não existe nada impenetrável na internet, mas podemos dificultar sempre que possível.
Neste artigo mostramos somente como redirecionar uma pasta como, por exemplo:
www.seusite.com.br/algumacoisa
Se você deseja saber como fazer quando houver mais de uma pasta como; “www.seusite.com.br/categoria/subcategoria/produto”, aguarde que em breve faremos um artigo para explicar o “Caminho das Pedras”.
Para verificar demais regras você pode consultar o manual do mod_rewrite do Apache, no endereço: //httpd.apache.org/docs/1.3/mod/mod_rewrite.html
Dúvidas, críticas ou sugestões comentem abaixo e bons estudos =)
Gigasystems Login:
Informe seu e-mail abaixo para continuar!
XVeja Também:
Artigos Relacionados a categoria: SEO
Como otimizar minha URL
11 December de 2014
Olá, deixe seu comentário para URL amigáveis com Mod_rewrite – parte 1
Paulo
Seria redirecionamento direto no htaccess.
Desde ja obrigado
Leonardo Martins
rewritecond %{http_host} ^dominio.com.br [NC]
rewriterule ^(.*)$ http://www.dominio.com.br/$1 [r=301,NC]
Qualquer dúvida comente...