Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Seguinte galera,
estou tentando trabalhar com URL Amigáveis, e no meu .htaccess coloquei a seguinte linha:
RewriteRule ^busca/([^/]+)/([^/]+)$ layout.php?pagina=busca&q=$1&pg=$2
Sendo que o Primeiro Parâmetro ($1) = Valor Buscado,
E O Segundo parâmetro deve ser opcional ($2) = Número da página (Paginação de resultados).
Bom:
RewriteRule ^busca/([^/]+)$ layout.php?pagina=busca&q=$1
Assim está funcionando.
url: localhost/site/busca/Valor+buscado,
ele ta abrindo a pagina de busca e passa o parâmetro corretamente.
Mas ai tentei fazer da seguinte forma:
RewriteRule ^busca/([^/]+)/([^/]+)?$ layout.php?pagina=busca&q=$1&pg=$2
Não funcionou.
tentei também:
RewriteRule ^busca/([^/]+)/([^/]+)?\/? layout.php?pagina=busca&q=$1&pg=$2
Mas também não funcionou.
quando tentei:
RewriteRule ^busca/([^/]+)/?([^/]+)$ layout.php?pagina=busca&q=$1&pg=$2
até funcionou, mas funcionou em partes, testando o retorno das variáveis percebi que a variável PG pega o ultimo char da variavel q ou seja:
buscando o valor: Teste
retorna:
echo $_GET["q"] = Test
echo $_GET["pg"] = e
Então to meio perdido, como faço para utilizar parâmetros opcionais no meu caso?
Obrigado. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Então,
acabei de editar o arquivo e testar.
mudei a linha e coloquei como me disse:
RewriteRule ^busca/([^/]+)/([^/]?+)$ layout.php?pagina=busca&q=$1&pg=$2mas continua sem funcionar.
quando tiro o segundo parametro funciona, mas desse jeito que me passou também não funciona.
>
Seu problema é com a ER então...
RewriteRule ^busca/([^/]+)/([^/]?+)$ layout.php?pagina=busca&q=$1&pg=$2 Já que o opcional são os itens dentro da lista.
Aqui, esse daqui
RewriteRule ^busca/([^/]+)/([^/]+)$ /busca.php?q=$1&pg=$2
Funcionou...
Acho que eu fiz diferente ali hehehe mas no caso do seu site seria assim acredito:
RewriteRule ^busca/([^/]+)/([^/]+)$ /layout.php?pagina=busca&q=$1&pg=$2Vê se você tá pegando as variáveis certo aí...
>
Aqui, esse daqui
RewriteRule ^busca/([^/]+)/([^/]+)$ /busca.php?q=$1&pg=$2
Funcionou...
Acho que eu fiz diferente ali hehehe mas no caso do seu site seria assim acredito:
RewriteRule ^busca/([^/]+)/([^/]+)$ /layout.php?pagina=busca&q=$1&pg=$2Vê se você tá pegando as variáveis certo aí...
Então José, dessa forma já está aqui no meu arquivo:
RewriteRule ^busca/([^/]+)/([^/]+)$ /layout.php?pagina=busca&q=$1&pg=$2
A regra acima funciona se eu digitar na url: http://localhost/site/busca/Valor+que+está+sendo+buscado/1
Onde 1 é a página atual da busca.
Se eu fizer isso, funciona, agora, eu preciso que o "/1" seja opcional, e da forma como você me informou anteriormente e agora não funciona. como eu disse no primeiro post, se eu coloco o ponto de interrogação (?) logo após a barra do primeiro parametro, o segundo parâmetro passa a ser opcional, mas curiosamente ele "come" o ultimo caracter do primeiro parametro.
RewriteRule ^busca/([^/]+)/?([^/]+)$ /layout.php?pagina=busca&q=$1&pg=$2na url com a regra acima: http://localhost/site/busca/Valor+Buscadoquando imprimo o $_GET["q"] aparece: Valor Buscad
na verdade você já entendeu meu problema
eheehe só que até agora não consegui fazer funcionar.
ai ai o problema continua, desculpa dar up no post mas to mesmo precisando resolver isso.
alguem ai?
vlew.
lembrando que o .htaccess está na raiz de localhost/site.
o que ta me intrigando mais do que tudo é que se eu deixar a linha da seguinte forma:
RewriteRule ^busca/([^/]+)/?([^/]+)$ layout.php?pagina=busca&q=$1&pg=$2
e no navegador digitar: http://localhost/site/busca/Teste
e na página de busca eu der um echo no $_GET["q"] ele retorna a variável com um caracter a menos, ele "come" o último caracter.
ele exibe: Test e a variável $pg que deveria ser vazia, exibe o caracter "e", ou seja, ele ta dividindo o resultado de $_GET["q"], tirando o ultimo char e jogando esse char pra variável $_GET["pg"] que deveria ser vazia.
Já se eu digitar no navegador: http://localhost/site/busca/Teste/2 ou seja, página 2 da busca,
a página busca imprime a variável $_GET["q"] corretamente ou seja: Teste
e a variável $_GET["pg"] imprime o 2 corretamente.
sai satanaisssssss http://forum.imasters.com.br/public/style_emoticons/default/pinch.gif
Amigo, faça dois:
RewriteRule ^busca/([^/]+)$ layout.php?pagina=busca&q=$1
RewriteRule ^busca/([^/]+)/([^/]+)$ layout.php?pagina=busca&q=$1&pg=$2
Funciona também, eu testei.
putz
porque que agente sempre pensa pelo lado mais dificil da coisa né?
ahahahahahahaha
querer resolver tudo de um jeito só, seria interessante, economiza linhas no arquivo, mas como o arquivo é pequenininho :lol:
Valeu José, http://forum.imasters.com.br/public/style_emoticons/default/clap.gif
funcionou.
Abraços.
http://forum.imasters.com.br/public/style_emoticons/default/bye1.gif
Seu problema é com a ER então...
RewriteRule ^busca/([^/]+)/([^/]?+)$ layout.php?pagina=busca&q=$1&pg=$2 Já que o opcional são os itens dentro da lista.