Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lud-RP

[Resolvido] Dificuldades com RewriteRule

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.