SEO

Utilizando mod_rewrite para criar URLs amigaveis

Por Celso Fernandes

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...

Celso Fernandes

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.

LEIA MAIS

Redirecionamento 301 em PHP, ASP, htaccess, Coldfusion e Ruby on Rails

Você quer saber como configurar o redirecionamento 301 no seu site? Veja como e mantenha sua relevância no Google!

O que é SEO? Confira O Guia do Search Engine Optimization

Confira, no artigo, o que é SEO, quais são suas características e técnicas, e descubra por que ele é tão vantajoso para empresas que querem ter destaque online.

Como Fazer o Google Encontrar o Seu Site?

Você sabia que existem diferentes formas de ajudar o Google a encontrar o seu site? Coloque nossas dicas em prática e faça seu site aparecer no buscador!

Comentários
  1. Avatar

    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.

  2. Avatar

    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.

  3. Avatar

    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.

    • Avatar

      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.

  4. Avatar

    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”

  5. Avatar

    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.

  6. Avatar

    Olá Danton,

    Acho que você deve procurar o suporte do Joonla. Deve ser alguma configuração que passou despercebida.

  7. Avatar

    Bacana o post…

  8. Avatar

    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.

  9. Avatar

    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?

  10. Avatar

    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

  11. Avatar

    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 😉

  12. Avatar

    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,

  13. Avatar

    Olá Celso, muito bacana seu artigo. Tenho uma dúvida! A estrutura do link exemplo já dava as informações necessárias e o que o Mod_rewrite fez foi organizá-la de melhor forma, correto? E quando tenho links nessa forma: http://www.meusite.com/produtos.aspx?produto=184. Como proceder nesse caso? Obrigado!

    • Avatar

      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.

  14. Avatar

    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.

  15. Avatar

    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.

  16. Avatar

    Boa tarde, migrei meu site para url amigavel com htaccess e deu td certo, porém o google ja tinha indexado as urls antigas e agora está aparecendo na central de Webmaster do google um monte de paginas com meta tag title e description duplicados. Ex.:
    http://www.moteisehoteis.com.br/moteis/ e http://www.www.moteisehoteis.com.br/moteis.php. Alguém ja passou por isso e pode me ajudar?

    • Avatar

      Você deve redirecionar com código de retorno 301 as páginas antigas para as novas.

  17. Avatar
  18. Avatar

    …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…

  19. Avatar

    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!

  20. Avatar

    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

  21. Avatar

    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.

  22. Avatar

    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.

  23. Avatar

    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???

  24. Avatar

    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

Os comentários estão fechados.

Já pensou em fazer parte do nosso time de mestres?