Ir para conteúdo

POWERED BY:

Arquivado

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

Criamix

[Resolvido] Isapi Rewrite 3

Recommended Posts

Esquece pessoal. Dei mancada. Está funcionando sim! Perfeito! É que eu estava tentando acessar a url através do endereço original, ou seja: noticias_consulta.asp?id=20, e esperava que o Rewrite alterasse ela para noticias_consulta/id/20. O que eu fiz foi acessar direto a url noticias_consulta/id/20 e deu certo. Ela estava funcionando. Eu que não a estava acessando direto. Perfeito! Já até mudei a regra e enxuguei mais ainda a url!

 

Obrigado a todos e continuemos com esta discussão para aprofundarmos a questão, já que há pouca informação na web sobre o componente.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

estou tentando implementar o ISAPI sem um servidor locaweb para a loja exemplo, que luta!

O problema é que para 2 querystrings não está funcionando.

 

.htaccess

-----------------------

RewriteEngine on

RewriteRule produtos_descricao/lang/(.*)/codigo_produto=/(.*)/ produtos_descricao.asp?lang=$1&codigo_produto=$2

RewriteRule produtos_descricao/lang/(.*)/codigo_produto=/(.*) produtos_descricao.asp?lang=$1&codigo_produto=$2

-----------------------

 

A página

www .compraseg.com.br/produtos_descricao.asp?lang=pt_BR&codigo_produto=139

deveria ficar assim

www. compraseg.com.br/produtos_descricao/lang/pt_BR/codigo_produto/30

 

Porém dá erro, não é possível acessa-la. Será que o ISAPI não funiona quando o valor da querystring é = letras, tipo: produtos_descricao.asp?lang=pt_BR

O código com apenas 1 querystring funcionou beleza.

RewriteRule produtos_descricao/codigo_produto=/(.*)/ produtos_descricao.asp?codigo_produto=$1

 

Se eu conseguir isso vou acabar fazendo um post no final passo a passo para ajudar os próximos, pois que tarefa complicada viu!

Como resolver um problema que nao vemos a mensagem de erro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Onedev faça assim

 

para deixar esta url

 

http://www.compraseg.com.br/produtos_descricao.asp?lang=pt_BR&codigo_produto=139
assim

 

http://www.compraseg.com.br/produtos_descricao/lang/pt_BR/codigo_produto/139/
você tem que montar o rewriting assim

 

RewriteRule produtos_descricao/lang/(.*)/codigo_produto/(.*)/ produtos_descricao.asp?lang=$1&codigo_produto=$2RewriteRule produtos_descricao/lang/(.*)/codigo_produto/(.*) produtos_descricao.asp?lang=$1&codigo_produto=$2
Se você quiser deixar assim

 

http://www.compraseg.com.br/produtos_descricao-lang-pt_BR-codigo_produto-139.htm
configure o rewrite assim

 

RewriteEngine onRewriteRule produtos_descricao-lang-(.*)-codigo_produto-(.*).htm$ produtos_descricao.asp?lang=$1&codigo_produto=$2
[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse negócio é um inferno. Fui altera o codigo conforme você passou e parou de funcionar.

Agora voltei ao primeiro codigo e tambem nao funciona...

 

RewriteEngine on#Transforma notíciasRewriteRule noticia/id/(.*)/teste/(.*)/ noticia.asp?id=$1&teste=$2RewriteRule noticia/id/(.*)/teste/(.*) noticia.asp?id=$1&teste=$2#Transforma produtosRewriteRule produtos_descricao/codigo_produto/(.*)/ produtos_descricao.asp?codigo_produto=$1RewriteRule produtos_descricao/codigo_produto/(.*) produtos_descricao.asp?codigo_produto=$1
Eu já to no desespero... segundo dia sem resolver o problema.

 

ERA PARA ABRIR ASSIM, MAS NAO FUNCIONA

http://www.compraseg.com.br/produtos_descricao/codigo_produto/130/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara ao fazer as modificações você deve esperar o server reinciar, se estiver utilizando iis reinicie, agora se estiver testanto em um servidor vai ter que esperar o mesmo ser reiniciado para que as opções sejam efetuadas.

 

O code passado esta certinho, confiri aqui, o problema é que tem que reiniciar para que as modificações sejam aplicadas corretamente.

 

EDITADO

 

Cara realmente, fiz alguma coisa errada, testei localmente aqui e não funfou, vou fazer uns teste aqui, qualquer coisa te falo.

 

Mods e admins desculpem por eu postar este post em seguida, so que o post anterior a opção de edita-lo já foi expirada.

 

Onedev você esta com o Rewrite 4? to achando que pode ser a versão, daquela maneira acho que somente o Rewrite 3 aceita... :ermm: testei e verifiquei tudo aqui, mais não encontrei o erro.

 

EDITADO

 

Consegui, fiz o teste aqui e funcionou, tente assim

 

RewriteEngine onRewriteRule produtos_descricao/(.*)/(.*)/(.*)/(.*)/$ /produtos_descricao.asp?$1=$2&$3=$4
acessa assim

http://www.compraseg.com.br/produtos_descricao/lang/pt_BR/codigo_produto/139/

Compartilhar este post


Link para o post
Compartilhar em outros sites

A locaweb usa REWRITE 3

http://wiki.locaweb.com.br/pt-br/Isapi_Rewrite

 

A única explicação é esperar o servidor reiniciar mesmo, pq eu testo todos os códigos e não funciona.

A unica coisa que esta funcionando é o seguinte:

 

.htaccess

RewriteEngine on

#Transforma notícias
RewriteRule noticia/id/(.*)/teste/(.*)/ noticia.asp?id=$1&teste=$2
RewriteRule noticia/id/(.*)/teste/(.*) noticia.asp?id=$1&teste=$2

noticia.asp

<%
for each item in request.querystring
   response.write item & ": " & request.querystring(item) & "<br />"
next
response.end
%>

Dessa forma é so acessar meusite.com.br/noticia/id/13434/

O arquivo asp le todos as querystring que você passou e escreve na tela.

É uma boa solução para testar. Isso está funcionando. Porem o outro código de produtos nao.

 

Ter que esperar servidor reiniciar pra testar cada alteração é fodah em, na lcoaweb segundo so atendentes ele reinicia todo dia as 2h da manha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entendi, mais tu testou a segunda forma que eu te passei? aqui ela funcionou melhor do que esta primeira, para não restar dúvidas faça o teste com ela também.

 

[]'s

 

é a melhor coisaa mesmo, omitir os valores passados pela querystring

 

RewriteRule /([0-9]{2})/ /produtos_descricao.asp?produto [i,L]

 

exelente onedev, que bom funcionou!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema é esse mesmo! tem que esperar o servidor reiniciar para que as alterações façam efeitos.

Por isso fica essa impressão de que o código está errado logo depois de altera-lo, pois o servidor da locaweb reinicia apenas de madrugada.

 

Achei uma solução para isso, é só acessar o PAINEL DE CONTROLE / FERRAMENTAS / REINICIAR APLICAÇÃO

e clicar em reiniciar o POOL DE APLICAÇÃO.

 

Isso vai precisar ser feito para cada alteração no arquivo .htaccess.

Feito isso, todos os códigos estão funcionando:

 

RewriteEngine onRewriteRule produtos_descricao/lang/(.*)/codigo_produto/(.*)/ produtos_descricao.asp?lang=$1&codigo_produto=$2RewriteRule produtos_descricao/lang/(.*)/codigo_produto/(.*) produtos_descricao.asp?lang=$1&codigo_produto=$2
Bom agora apenas uma dúvida, nos menus internos de toda a loja virtual, deverei alterar os links para os produtos não é memsmo? Hoje estão assim produtos_descricao.asp?codigo_produto=30, então vou ter que reprogramar o sistema para exibir o link assim produtos_descricao/codigo_produto/30/.

Está correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

PUTZ GRILA!

 

Na revenda windows da locaweb tem disponível o ISAPI 2.

Porém tem que abrir chamado solicitando a instalação.

 

A pelinha é que o ISAPI 2 é diferente do 3, os códigos não servem.

E outra, não se usa o .htaccess e sim o httpd.ini, achei melhor pois ele não fica oculto no ftp.

É só abrir o bloco de notas, calar o código abaixo dentro dele e salvar como httpd.ini e depois jogar esse arquivo na pasta /httpdocs/ da sua revenda.

 

o código ficou assim:

[ISAPI_Rewrite]RewriteRule ^/noticia/id/(.+)/ /noticia.asp?id=$1 [I,L]RewriteRule ^/noticia/id/(.+) /noticia.asp?id=$1 [I,L]
O próximo coitado que for trabalhar com isso e achar esse tópico vai pegar tudo mastigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bacana pessoal! Até que enfim este tópico deslanchou!!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Agora me empolguei e estou mandando bala em mais algumas "perfumarias" nas minhas urls, e surgiu mais uma dúvida!

 

Como faço para isso: www.yrt.com.br/loja-28/Campo-Belo

 

Se transformar nisso: www.yrt.com.br/Campo-Belo

 

Atualmente o meu rewrite faz assim:

 

RewriteRule loja-(.*)/(.*)/ lojas_consulta.asp?id=$1&loja=$2

Como faço para ignorar a primeira variável ($1) e imprimir só a segunda ($2)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou colocar um o tópico só sobre Isapi Rewrite , no lab. de script, sempre alguem tem duvida sobre isso..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza mano, porém eu sugiro que tu não use o rewrite 2, isto porque ele é uma versão inferior, no futuro terá mais facilidade em serextreminada hehehehehe eu manteria no rewrite 3 ou até passaria para o rewrite 4 se fosse possível.

 

No mais é isso, boa sorte ae com o projeto.

 

EDITADO

 

CriaMix acredito que desta sua forma não será possível, isto porque o sistema precisara identificar o id, sem ele não vai funfar.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentou $2 [L]

RewriteRule loja-(.*)/(.*)/ lojas_consulta.asp?&loja=$2 [L]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não será possível pois o sistema terá que identificar o id da querystring "id=" sem ela o sistema não conseguira montar a página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não será possível pois o sistema terá que identificar o id da querystring "id=" sem ela o sistema nãoconseguira montar a página.

Você tem razão. Fiz um teste aqui, invertendo as variáveis e depois chamando só a primeira, mas o ASP precisa do id para chamar o registro. Deu erro mesmo.Mas já está bacana. Ficou ótimo!Obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como faço para isso: www.yrt.com.br/loja-28/Campo-Belo

 

Se transformar nisso: www.yrt.com.br/Campo-Belo

 

 

 

RewriteRule ^/loja-([0-9]+)/([a-zA-Z-]+)?.html /lojas_consulta.asp?id=$xxx

 

 

basta mudar o xxx pelo valor (1, 2 ou 3)

 

 

 

([a-zA-Z-]+) = indica que estes caracteres serao apenas letras; o + indica que é mais de 1 caracter; o - é o caracter aceito (poderia ser _)

 

 

([0-9]+) = apenas numeros

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, o rewrite precisa identificar os ids na url, sem eles ele não conseguira definir a ação.

 

Mais que bom que conseguiu.

 

EDITADO

 

Desisto, mais tem certeza que o sistema pegara o id, por exemplo 28... até ae beleza... mais como ele conseguira trocar o id 28 por campo-belo, sendo que não foi expecificado na url? essa eu não entendi hehehee

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

a id no caso nao é a 28?

 

o identificador nao precisa necessariamente ser uma id

 

pode ser Campo-Belo, ja que entende-se que nao existem 2 lojas com o mesmo nome, entao ela assume o papel de ID, sendo consultada como loja=Campo-Belo e nao id=28

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ha sim entendi não havia pensado nisso, pensei que precisaria do id de qualquer maneira, mais realmente se for possível pegar apenas pelo nome é viavel sim, mais o problema é que varia de caso a caso, neste caso do nosso amigo ele então não precisaria nem esta utilizando o id na tabela do bd.

 

Exelente.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, cada caso é um caso :)

 

eu tenho determinados links que adoto o titulo como identificador, ja que nao possou paginas iguais

 

 

 

site.com.br/tutorial/asp.html

 

nesse caso basta consultar pelo titulo no lugar do id

 

 

 

o mesmo exemplo serve pra loja

 

site.com.br/produtos/americanas.html

 

lista todos produtos que sao da loja 'americanas'

 

isso é com url amigavel :)

 

 

 

site.com.br/produtos/127/americanas.html

 

seria uma total redundancia

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.