SEO

Em por

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.

url amigável

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:

ativar mod_rewrite

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 wink

Veja Também:

Artigos Relacionados a categoria: SEO

Olá, deixe seu comentário para URL amigáveis com Mod_rewrite – parte 1

Já temos 2 comentário(s). DEIXE O SEU :)
Paulo

Paulo

Boa tarde Leonardo, para redirecionar o domínio quando o usuário digitar exemplo dominio.com.br ele direcionar para www.dominio.com.br qual linha adiciono neste codigo??

Seria redirecionamento direto no htaccess.

Desde ja obrigado
★☆☆☆☆ DIA 08.04.16 16h04 RESPONDER
N/A
Enviando Comentário Fechar :/
Leonardo Martins

Leonardo Martins

Boa tarde paulo, então neste caso especifico o código para redirecionamento é outro, seria o 301 veja o exemplo:




rewritecond %{http_host} ^dominio.com.br [NC]

rewriterule ^(.*)$ http://www.dominio.com.br/$1 [r=301,NC]



Qualquer dúvida comente...
★☆☆☆☆ DIA 12.04.16 14h04 RESPONDER
N/A
Enviando Comentário Fechar :/
Enviando Comentário Fechar :/

...AINDA NÃO VIU NOSSO PORTFÓLIO?

Se ainda não viu nosso Portfólio e quer conhecer um pouco mais... aproveite e veja agora mesmo e tenha um site de qualidade para o seu negócio!

[contato]
Ver o Portfólio Agora