Utilizando mod_rewrite para criar URLs amigaveis

Atualmente o que temos que os motores de busca dando uma certa relevância para certos conteúdos ou urls, mas que nem sempre conseguimos alcança-las.
Um caso em particular disso é quando temos que realizar a passagem de parâmetros através de uma URL, mas isso não serio muito amigável para o motor de busca, então é ae que entra uma solução para o nosso problema, o uso do mod_rewrite.

Mas o Que é o mod_rewrite?

O mod_rewrite como é conhecido, ou rewrite engine, é uma módulo do servidor web Apache que é usado para re-escrever URLs antes que os itens solicitados sejam buscados no servidor e isto pode ser usados para vários propósitos. As regras do mod_rewrite serão lidas a partir do seu arquivo .htaccess, por isso é importante sempre colocar o “RewriteEngine On” e sempre testar muito bem as regras para seu site não entrar em loop e ficar inacessível.

O que é uma URL amigável para o motor de busca?

Uma URL amigável é uma URL que seja bem aceita pelo motor de busca, normalmente uma esta é longa, contém valores dinâmicos e dificilmente contém palavras-chave. Já as URLs amigáveis são curtas, estáticas e contém as keywords que se deseja obter maior relevância.

Usando mod_rewrite

Vamos a um exemplo prático disto, supondo que precise passar a um script denominado automovel.php as informacoes como modelo, combustível e ano, normalmente

seria feito na forma

www.dominio.com/automovel.php?modelo=gol&combustivel=gasolina&ano=2007

Para obtermos uma URL amigável na forma:

www.dominio.com/automovel/gol/gasolina/2007.html

bastaria adicionar o seguinte código, no seu .htaccess:

RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /$1.php?modelo=$2&combustivel=$3&ano=$4 [L]

Obviamente esta é uma aplicação básica da utilização do mod_rewrite para criar URL amigável e que pode ser adaptada as suas necessidades, não esquecendo que é aconselhável uma certa prática com expressões regulares para criar tais regras.

Conclusão

O mod_rewrite tem se demonstrado uma ferramenta útil para criar URL que aparentemente são estáticas para o crawler do motor de busca, porém deve ser utilizada com cuidado para não criar regras erradas e tornar seu site inacessível. Uma dúvida que alguém poderia levantar é sobre a ordem de se utilizar automovel/gol/gasolina ou automovel/gasolina/gol na URL, mas isto é uma discussão que deixaremos para outro post sobre profundidade dos caminhos na URL.

Receba Novidades

Insira seu email para receber novidades e dicas exclusivas da Agência Mestre!
Divulgue este artigo

31 Comentários para “Utilizando mod_rewrite para criar URLs amigaveis”

  1. Marcus VBP

    Salve amigo! O recurso Mod_rewrite é muito interessante e de fato, é bastante importante para o SEO.

    Passei muito tempo tentando ativar o recurso no apache instalado na minha máquina, para que eu pudesse fazer testes localmente, de forma mais prática.

    Recentemente eu consegui fazê-lo no Ubuntu, e expliquei em um artigo do meu site. Fica como dica, já que os assuntos estão intimamente relacionados ;)

    Sucesso para vc.

    Responder
  2. Fábio Ricotta

    E aí Marcus! Sou o Ricotta lá do MXStudio! Que mundo pequeno! =)

    O mod_rewrite sem dúvidas é uma grande ferramenta para otimização de sites. Reescrever a URL como Celso citou acima, é um dos maiores “truques” para conseguir mais visitas e um melhor rankeamento.

    Não quero adiantar um futuro post do Celso, mas a grande chave é quais e em qual ordem dispor as palavras-chave da URL reescrita.

    Responder
  3. Ronaldo Prazeres

    Realmente é muito interessante.
    A pouco tempo comecei a usar o CodeIgniter um framework para PHP e ele trata todas as urls em mod_rewrite e usa a arquitetura MVC. Fica aí a dica.

    Responder
    • Gustavo Dutra

      Não só o CodeIgniter, mas também o CakePHP e ZendFramework. Inclusive outros que têm conceitos diferentes como o Drupal, também usam mod_write. Eu escrevi um post que, audaciosamente, chamei de Guia completo e definitivo de como usar mod_rewrite. Lá tem uma parte falando sobre arquitetura de software e mod_rewrite, bem como elas se relacionam. Falo um pouco de MVC, REST e URL map.

      Responder
  4. Web Designer Demétrios

    Fiz esta pergunta em outro post mas acho que devia ser feito aqui…..
    Como configurar o .htaccess para tirar a extensão?
    Exemplo:
    “www.site.com.br/pagina.html” para “www.site.com.br/pagina”

    Responder
  5. bob danton

    Fiz a migração do joomla para da versão 1.0.15 para a versão 1.5.
    Tudo funcionou direitinho sem erros.
    Consigo entrar no modo administrador. Tudo funcionando permeitamente.
    Mas o sistema não roda para abrir a página principal.
    O suporte do server diz para que eu configure o Apache mod_rewrite.
    Não tenho a menor idéia de como fazê-lo.
    Peço ajuda, por favor.

    Responder
  6. João Paulo

    Muito legal o post e bem explicativo. Segui os passos e consegui configurar meu joomla. Mas cara surgiu uma duvida e não encontro nada na internet – ja estou sem esperanças. Tenho um banner que esta visivel em todas as pagina, apos utilizar o SEO este banner simplesmente não fuciona mais nos submenus. Alguma ajuda? Desculpa usar esse canal para tentar resolver o problema.

    Responder
  7. Wellington V. Santos

    o mod_rewrite esta disponível para o servidor apahce, mas e pra IIS? (windows/ASP) qual a melhor solução/opção?

    eu particularmente utilizo um algoritmo com server.transfer, funciona mas não sei se é a melhor opção… o que me dizem?

    Responder
  8. Vitor M. Braga

    Muito bom este post como todos os outros… mais para variar um poco não consegui realizar isso com sucesso.

    Primeira vez aqui no mestre SEO e ja com uma dúvida. Tomara que alguem me ajuda que ja faz quase duas semanas que estou atrás disso…

    Bem vamos lá.

    Estou utilizando o ModRewrite… na página sem ModRewrite o css aparece tudo certinho mais ja quando eu entro na pagina pelo link “gerado” a partir do ModRewrite o css some não aparece o fundo nem nada…

    Conteudo do .htaccess

    RewriteEngine on
    RewriteRule ^lancamentos\/([a-z,0-9,A-Z,_-]+)\/?$ lancamentos-imoveis-destaque.php?id=$1

    Teria como alguem me ajuda nisso???

    Obrigado e Tenham uma boa tarde

    Responder
  9. Wellington V. Santos

    Vitor, acho que ele não reconheçe o caminho do arquivo css:

    experimente colocar o endereço completo:

    ou utilizar dentro do :

    mas é mais indicado a primeira opção..

    espero ter ajudado, abraço ;)

    Responder
  10. Wellington V. Santos

    complementando, ja que blog nao permitiu codigos html… quis dizer pra colocar o endereço completo tipo: h t t p : / / w w w . s e u s i t e . c o m . b r / s t y l e s . c s s

    att,

    Responder
    • Frank Marcel

      Praticamente a mesma coisa.
      São duas soluções principais:

      – remodelar o banco de dados para comportar o novo modelo de URLs;

      – Colocar um passo a mais para mapear “/produtos/cadeiras” para “/produtos.aspx?nome=cadeiras” e mapear este último para “/produtos.aspx?produto=184”, que finalmente retorna o conteúdo da página.

      Responder
  11. Michel

    Olá Pessoal estou a com a seguinte dúvida, coloquei o quero transformar a seguinte URL:
    http://localhost/br/moveis/produto.php?cdproduto=3
    Tranformar em:
    http://localhost/br/moveis/produto/3

    meu .htacess está dentro do diretorio localhost/br/moveis e está desta forma:

    RewriteEngine On
    RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)\.html$ /$1.php?cdproduto=$2

    Não está funcionando, já tentei de tudo li em um monte de sites mas nada acontece. Estou desesperado já. Abraço.

    Responder
  12. Eder

    Não consigo fazer funcionar o .htaccess em meu servidor, a lógica parece correta, mais não vejo erro e nem solução ainda.

    Responder
  13. Antônio Júnior (@AS3_STUDENT)

    …Parabéns, depois de várias vezes pesquisar na net, encontrar muitos “tutoriais”, esse foi o único que consegui implementar, mas como todos que encontrei, infelismente para quem não conhecia o assunto como eu, tem poucos exemplos, a curva de aprendizado é muito curta, deveria ter uns exemplos com mais parametros, com a aplicação dentro de uma pasta que não fosse a raiz do site, fica ai a dica, mais uma vez parabéns galera…

    Responder
  14. Rodrigo

    Olá amigo,

    No caso de uma página estática como ficaria o código?
    ex: ter uma xyz.php passando para /pagina-xyz/

    Obrigado e parabéns pela matéria!

    Responder
  15. marina

    tenho uma loja virtual, e quase todo o conteúdo aparece como duplicado no google webmaster. a plataforma q uso é o magento, eu habilitei as urls canônicas, mas acho q tenho q fazser mais alguma coisa qto às essas urls canonicas, como faço??
    Obrigada

    Responder
  16. Rodrigo

    Opa blz?

    Cara estou com uma dúvida séria, sera que consegue me ajudar?

    minha URL é a seguinte:
    http://www.meusiteteste.com.br/busca/categ/1-2/?b=chinelo

    criei o seguinte rewrite:
    RewriteRule ^(busca)\/([^/]+)\/([^/]+)\/?$ web/site/busca.php?$2=$3 [L]
    Porém quando executo, ele me retorna só o GET categ=1-2 o GET “b” que esta depois do “?” ele não exibe nem a pau….

    sabe como me ajudar? faltou algo? eu fiz a regra no windows e funcionou normal, agora que preciso migrar pra linux não vai.

    Obrigado.

    Responder
  17. Kelsen

    Marcus,

    Tenho algumas paginas no raiz de meu host.
    Ex: index, produtos, calça, camiseta

    Estou querendo fazer o seguinte, mudar url ao acessar estas paginas.
    Ex: http://www.meusite.com.br/produtos – pagina master dos produtos

    Ex2: http://www.meusite.com.br/produtos/camisetas – como fosse subcategoria de produtos, porém não estou conseguindo fazer isto, já vi algumas sintaxe no arquivo .htaccess porém sem sucesso. Poderia me ajudar? todos os arquivos estão no raiz sem subdiretórios e são todos em HTML5.

    Responder
  18. Maria Lina

    O código funcionou certinho mas quando utilizo a URL Amigável e preciso pegar o IP de quem está acessando o site com $_SERVER[‘REMOTE_ADDR’]; ele passa a pegar o IP do provedor (no caso, UolHost)… sabe me dizer como solucionar???

    Responder
  19. Denise

    Olá, preciso de uma ajuda. Configurei o procedimento do .htaccess conforme tutorial. porém algumas urls não ficaram amigáveis. Uso joomla 1.5

    Responder

Deixar um comentário

  • (não será publicado)

XHTML: Você pode usar estas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>