domingo, 20 de março de 2011

Passar query strings para url com rewrite ativado.

Esses dias estava pesquisando como passar mais de uma query string numa url amigável que já tinha um rewrite_mod nela.

Não sabe o que é URL amigável?
Aprenda aqui: http://blog.thiagobelem.net/aprendendo-urls-amigaveis/

Antes usava:
RewriteRule ^produto/([a-z0-9-_]+)/?$ produto_exibe.php?link=$1 [NC]

O que funcionava perfeitamente em:
www.site.com.br/produto/nome-do-produto/

Só que o problema surgiu quando quis passar uma query junto com a url:
www.site.com.br/produto/nome-do-produto/?from=main

Aí descobrir que é só tirar o símbolo de $ que significava que a URL tinha terminado ali, e adicionar uma flag 'QSA', que acho que seria Query Strings Automáticas. (algo assim)
Aí fica:
RewriteRule ^produto/(.*)/? produto_exibe.php?link=$1 [NC,QSA]

Fica aí a dica...

4 comentários:

  1. Grande dica! Obrigado por complementar meu artigo. :)

    ResponderExcluir
  2. Isso é muito útil para quando for usar um formulário de busca.

    Valeu pelo post. Abs

    ResponderExcluir
  3. Gabriel,

    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: www.meusite.com.br/produtos - pagina master dos produtos

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

    ResponderExcluir
  4. Você precisa estar usando o Apache como servidor primeiramente, e não podem existir arquivos ou pastas com os mesmos nomes (produtos, calcas...)
    De resto, não tem erro... siga o tutorial do Thiago no começo do post

    ResponderExcluir