Lud-RP 0 Denunciar post Postado Janeiro 13, 2011 Bom dia galera, nossa.. faz tempo que não posto por aqui .. rsrs Vamos lá, estou trabalhando com "URL Amigáveis" em um novo projeto e quando fui definir as regras do .htaccess surgiu um erro inesperado. Basicamente a estrutura de Urls do site será a seguinte: www.site.com.br/pagina -> aponta para: index.php?pg=pagina Esta regra no arquivo .htaccess Rewriterule ^([^/]+)\/?$ index.php?pg=$1 Acontece que ela já não funciona, quando testo na "index.php" imprimindo o que o $_GET me retorna ele exibe que o parâmetro "pg" retorna: index.php, veja: Retorno GET: Array( [pg] => index.php ) Quando na verdade o que deveria retornar na variável PHP seria o "pagina" que vem logo depois da barra. /pagina Se eu modificar esta regra para a seguinte: Rewriterule ^([^/]+)\.html$ index.php?pg=$1 Então passa a funcionar, o $_GET me traz o "pagina" como valor do parâmetro "pg". Outra situação: RewriteRule ^([^/]+)\/([^/]+)\/?$ index.php?pg=$1&valor=$2 Essa regra funciona perfeitamente. Basicamente o que eu preciso é que, ao acessar: www.site.com.br/pagina ele aponte para: index.php?pg=pagina e que ao acessar www.site.com.br/pagina/valor ele aponte para: index.php?pg=pagina&valor=valor Qual o problema em minhas regras? Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Janeiro 13, 2011 Tenta: RewriteRule ^([0-9a-z-A-Z]?)/([0-9a-z-A-Z]?)$ index.php?pg=$1&valor=$2 Compartilhar este post Link para o post Compartilhar em outros sites
Lud-RP 0 Denunciar post Postado Janeiro 13, 2011 Tenta: RewriteRule ^([0-9a-z-A-Z]?)/([0-9a-z-A-Z]?)$ index.php?pg=$1&valor=$2 Fiz uma pesquisa aqui e meu arquivo atual está da seguinte forma: 1 - Options FollowSymLinks 2 - RewriteEngine On 3 - 4 - RewriteCond %{REQUEST_FILENAME} !-f 5 - RewriteCond %{REQUEST_FILENAME} !-d 6 - 7 - RewriteRule ^([^/]+)/? index.php?pg=$1 8 - RewriteRule ^([^/]+)\/([^/]+)\/? index.php?pg=$1&valor=$2 Com esta regra, se eu acessar: www.site.com.br/pagina está funcionando, o parâmetro "pg" me retorna o valor "pagina". Porém ao tentar acessar: www.site.com.br/pagina/valor não funciona, ele me retorna o array: Array( [pg] => index.php [valor] => valor) Ou seja, o 1º parâmetro não vem com o valor correto, este array deveria ser: Array( [pg] => pagina [valor] =>valor) Se eu remover a linha 8 do arquivo, ele está funcionando, ou seja, quando acesso: www.site.com.br/pagina ele está retornando o valor correto no parâmetro "pg". Mas com a linha 8 fazendo uma sobrecarga na regra, ele está dando erro, quando acesso: www.site.com.br/pagina/valor ele está retornando os valores: Array ( [pg] => index.php [valor] => valor ) Logo, se eu removo a linha 7, e deixo apenas a linha 8, o arquivo volta a funcionar me retornando os dados corretos quando acesso : www.site.com.br/pagina/valor mas neste caso ao tentar acessar apenas: www.site.com.br/pagina ele me retorna página inexistente. Portanto o que me parece é que a sobrecarga da regra é que está impedindo o funcionamento, como resolver isso? :D Vlew Bom, como não fiquei parado esperando uma solução consegui resolver o problema, pelo menos por enquanto. Aqui no próprio imasters, encontrei um texto com exemplos de como trabalhar com URL Amigáveis, e um dos exemplos trazia uma regra que funcionou bem no meu caso. Segue: Options FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)(/([^/]*)/?)?$ index.php?pg=$1&valor=$3 [L] Com isso, posso definir a quantidade de parâmetros que quiser e utilizar em uma única regra que funciona perfeitamente. Abs. Moderador pode fechar o tópico. Compartilhar este post Link para o post Compartilhar em outros sites