Ir para conteúdo

POWERED BY:

Arquivado

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

Public2004

[Resolvido] Isapi Rewrite

Recommended Posts

Como criar a regra para este caso: Na URL haverá sempre uma variável "categoria", e dependendo da quantidade de registros no bd, pode haver ou não a paginação que neste caso entrará uma segunda variável "page" na URL.

Se fizer assim só funciona a primeira regra:

 

RewriteRule /produto/([^/]+) /produtos.asp\?categoria=$1 [I,L]
RewriteRule /produto/([^/]+)/page-([0-9]+) /produtos.asp\?categoria=$1&page=$2 [I,L]
Assim, somente se houver a variável page na URL, se esta não existir, não funciona apenas com a variável "categoria"

RewriteRule /produto/([^/]+)/page-([0-9]+) /produtos.asp\?categoria=$1&page=$2 [I,L]

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

URL original: "site.com.br/produtos.asp?categoria=a" / nova: "site.com.br/produto/a"

De acordo com a quantidade de registros no banco, pode haver ou não a paginação que aí entrará a segunda variável. Sempre no primeiro acesso a página produtos.asp apenas a variável "categoria" será fornecida, somente após a verificação no banco é que haverá ou não a variável da paginação "page", URL original: "site.com.br/produtos.asp?categoria=a&page=1" / Nova: "site.com.br/produto/a/page/1"

Veja acima as formas que tentei sem sucesso. O meu problema em montar a expressão é que a variável "page" pode ou não ser utilizada.

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora entendi, teste assim

 

RewriteRule ^produto/([^/]+)/?$ produtos.asp?categoria=$1 [L]
RewriteRule ^produto/([^/]+)/page/(\d+)/?$ produtos.asp?categoria=$1&page=$2 [L]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não funcionou :(

Dessa forma não há acesso a página com ou sem a var page.

Edit:

Oooo Patrique, desculpa, continuei fazendo uns testes aqui e acrescentei uma barra no inicio da url e agora funcionou!

/produtos.asp?categoria=$1 [L]

Outra pergunta: O que significa esse (\d+)

 

Maravilha, obrigado fera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok entendi, mas não teria o mesmo efeito de como havia utilizado antes para números: "([0-9]+)" ??

 

Aproveitando o gancho, estou pensando em eliminar da URL o "/produto/" ficando:

"site.com.br/categoria_produto" ou "site.com.br/categoria_produto/page/x"

Nesta página que lista os resultados em cada um deles há um link para detalhes do produto em outra página (detalhes.asp?id=123&nome=nome_produto), pergunta: Mesmo sendo em outra página eu poderia deixar a URL com o padrão acima:

"site.com.br/categoria_produto/123/nome_produto" - Se sim, como ficaria?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que eu sei o ([0-9]+) conta apenas decimais, por isso se usa (\d+) para qualquer numeração.

 

Para deixar a url assim:

 

http://www.site.com.br/categoria_produto
http://www.site.com.br/categoria_produto/page/

Faça assim

 

RewriteRule ([^/]+)_produto/?$ /produtos.asp?categoria=$1
RewriteRule ([^/]+)_produto/page/(\d+)/?$ /produtos.asp?categoria=$1&page=$2

Em relação a este

 

http://site.com.br/categoria_produto/123/nome_produto

eu não entendi, explica ai melhor.

 

Editado

 

Acho que entendi, para aceitar o nome do produto também, seria necessário você criar outra expressão no caso seria essa

 

RewriteRule ([^/]+)_produto/page/(\d+)/([^/]+)/?$ /produtos.asp?categoria=$1&page=$2&nome=$3

Com isso iria aceitar o nome do produto quando fosse necessário

 

Fiz um code aqui para testar e foi certinho.

 

<%
categoria = request.querystring("categoria")
page = request.querystring("page")
nomeproduto = request.querystring("nome")

If page <> "" then
    Response.Write "page: " & page
    Response.Write "<br />"
End If

Response.Write "categoria: " & categoria

If nomeproduto <> "" then
    Response.Write "<br />"
    Response.Write "nome produto: " & nomeproduto
End If
%>

Com isso fica sem problemas nas urls, basta testar ai as urls

 

http://localhost/1_produto/
http://localhost/1_produto/page/2
http://localhost/1_produto/page/2/nomeproduto

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim, a página "produtos.asp" conseguimos resolver, obrigado de novo, o que era:

"site.com.br/produtos.asp?categoria=xyz" ficará: "site.com.br/xyz" se entrar paginação: "site.com.br/xyz/page/x"

 

Nesta página produtos.asp é listado a relação dos produtos por categoria com seus respectivos links para outra página chamada: "detalhes.asp?categoria=xyz&id=123&nome=Nome_Produto" - O que eu queria saber é se é possível reescrever a url desta página detalhes para ficar como o padrão da página de produtos, ex:

De: "site.com.br/detalhes.asp?categoria=xyz&id=123&nome=Nome_Produto"

Para: "site.com.br/xyz/123/Nome_Produto"

 

Vlw fera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado. Achei que poderia dar problema acessando páginas diferentes e com o primeiro parâmetro igual, mas como as páginas obrigatoriamente devem receber mais parâmetros, acredito que funcionará pelos testes rápidos que efetuei por aqui. Qualquer coisa posto de novo.

 

Abs e obrigado mais uma vez.

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.