Ir para conteúdo

POWERED BY:

Arquivado

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

matheusmarson

URL amigável e parâmetros dinâmicos

Recommended Posts

Senhores

 

Estou montando um site de venda de produtos onde este deve ter url amigáveis.

O problema que estou enfrentando é o seguinte

Tenho a url produtos.php?categoria=$categoria&subcategoria=$subcategoria

Pode ocorrer determinadas situações em que ambas a variáveis ($categoria e $subcategoria) tenham algum valor, outra situação em que apenas a $categoria tenha valor e uma terceira situação onde ambas não contenham valor algum (produtos.php?categoria=&subcategoria=).

Meu problema está justamente aí

 

Fiz as regras de rewrite da seguinte maneira:

RewriteRule ^produtos/([A-Za-z0-9]*)/([A-Za-z0-9]*)/?$ /produtos.php?categoria=$1&subcategoria=$2 [NC,L]

 

Se eu chamar a url de forma amigável da seguinte maneira: http://www.meusite.com.br/roupas'>http://www.meusite.com.br/roupas/masculina'>http://www.meusite.com.br/roupas'>http://www.meusite.com.br/roupas/masculina (ambas variáveis com valor) tudo ocorre normalmente.

Se eu chamar http://www.meusite.com.br/roupas'>http://www.meusite.com.br/roupas (apenas a variavel categoria com valor) tudo normal também

Agora de eu chamar: http://www.meusite.com.br (ambas variáveis sem valor) dá erro

 

Alguém poderia me dizer como resolver este problema? Ou melhor como montar minha expressão regular

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta usando alguma regra para a index?

 

RewriteRule ^produtos/([A-Za-z0-9]*)/([A-Za-z0-9]*)/?$ /produtos.php?categoria=$1&subcategoria=$2 [NC,L]

se você definiu apenas esse parametro, qq outra url vai dar erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

regra:

RewriteRule ^produtos/([A-Za-z0-9]*)/([A-Za-z0-9]*)/?$ /produtos.php?categoria=$1&subcategoria=$2 [NC,L]

 

acesso:

site.com.br/produtos[...]

 

a regra criada é para acessar a url acima

 

 

existem N formas de se fazer isso

mas pela regra que você criou, acessar http://www.meusite.com.br/roupas não deveria cair em produtos

poste seu htaccess com todas as regras que fica melhor

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta assim o meu .htaccess

 

 

<IfModule mod_rewrite.c>

RewriteEngine On

 

#regra para a pagina de contatos

RewriteRule ^contatos/?$ /contatos.php [NC,L]

#regra para a página de produtos

RewriteRule ^produtos/([A-Za-z0-9]*)/([A-Za-z0-9]*)/?$ /produtos.php?categoria=$1&subcategoria=$2 [NC]

 

</IfModule>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer assim:

RewriteRule ^produtos/$ produtos.php?produtos.php?categoria=index&subcategoria=none [NC]
RewriteRule ^produtos/([a-zA-Z-0-9]+)/ produtos.php?produtos.php?categoria=$1&subcategoria=none [NC]
RewriteRule ^produtos/([a-zA-Z-0-9]+)/([a-zA-Z-0-9]+)/ produtos.php?produtos.php?categoria=$1&subcategoria=$2 [NC]

 

criar as 3 regras de acesso à página de produtos

1. produtos - index

2. produtos - categoria

3. produtos - categoria e subcategoria

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

Teria como ter url amigável e trabalhar com os parâmetros do get juntos?

 

Exemplo: www.meusite.com/noticias/542?abc=1&def=2

 

Teria como trabalhar também com os parâmetros abc e def?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho a vaga lembrança de que quando eu precisei, eu tirei um determinado arquivo das regras, então ele era acessado diretamente, aceitando parâmetros por GET.

 

O que implicava que ou usava o GET, ou a URL amigável, os dois eu não sei como fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, use a flag [QSA]

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.