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.
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.
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.
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.
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.
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”
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.
Olá Danton,
Acho que você deve procurar o suporte do Joonla. Deve ser alguma configuração que passou despercebida.
Bacana o post…
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.
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?
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
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 😉
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,
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!
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.
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.
Michel, tente:
http://localhost/br/moveis/produto.php?cdproduto=(%5B1-9%5D+)
para http://localhost/br/moveis/produto/$1
ou o contrário, pois talvez você tenha se confundido aí.
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.
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?
Você deve redirecionar com código de retorno 301 as páginas antigas para as novas.
Tenho uma dúvida de como proceder na reescrita e vou utilizar seu exemplo:
http://www.dominio.com/automovel.php?modelo=gol&combustivel=gasolina&ano=2007
Como eu procedo se
http://www.dominio.com/automovel.php?modelo=gol&ano=2007, http://www.dominio.com/automovel.php?combustivel=gasolina&ano=2007, http://www.dominio.com/automovel.php?modelo=gol&combustivel=gasolina são formas válidas de busca em meu site?
parabéns pelo post!
…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…
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!
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
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.
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.
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???
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