Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal.
Estou com uma pequena dúvida sobre as "URL's amigáveis" usando o Isapi Rewrite 3 e mesmo depois de muito procurar, não consegui resolver.
VAMOS LÁ: preciso deixar as url's do site de um cliente meu mais "amigáveis", e para isso estou usando o Isapi Rewrite 3, que está instalado no servidor (Locaweb). Li o wiki disponibilizado pela própria Locaweb, acessei o site da Isapi e pesquisei no Google. Já consegui retirar o .ASP.
O QUE NÃO CONSEGUI FAZER: tentei de todos os jeitos, vasculhei os tutoriais da Isapi e alguns que achei no Google, mas nenhum deu certo. Preciso retirar também a ? (interrogação) e o & (e-comercial) e substitui-los por / (barra). Além disso, pretendo mexer um pouco em outros itens da url também, como as variáveis e nomes de arquivos. Seria assim:
Preciso que isso: www.site.com.br/noticias_consulta?id=17 (antes aparecia o .ASP depois do noticias_consulta, mas já tirei a extensão)
Se transforme nisso: www.site.com.br/noticias/17 (ou algo parecido)
O MEU CÓDIGO ATUAL:
RewriteEngine on
RewriteRule ^([^?]+)\.asp$ $1 [NC,R=301,L]
RewriteCond %{REQUEST_FILENAME}.asp -f
RewriteRule (.*) $1.asp
MINHA DÚVIDA: o que preciso inserir no código acima para que as urls que citei sofram a mudança esperada?
Por favor pessoal. Agradeço muito se puderem me ajudar. Posto apenas dúvidas que realmente não consegui resolver depois de muita pesquisa. Logicamente ainda não estudei Expressões Regulares, o que ajudaria muito, mas esta função é urgente para mim e preciso contar com aqueles que já possuem conhecimento mais avançado neste assunto.
Grande abraço a todos e obrigado desde já!
Colega, boa noite.
Sei que a sua intenção foi das melhores, mas peço que leia o meu texto todo, pois nele deixo claro que pesquisei muito antes de cadastrar este post, incluindo o próprio wiki da Locaweb, o Google e o site da Isapi. O próprio código que estou utilizando foi extraído do wiki fornecido pela Locaweb. Além dele, no entanto, cheguei a testar vários outros exemplos que encontrei em outros sites, mas nenhum funcionou.
Portanto, o que eu peço é que vocês me ajudem a completar o código que postei para que a função que desejo funcione corretamente, ok?
Muito obrigado novamente.
>
melhor tutorial:
Faça o seguinte:
RewriteRule ^/produto/([0-9]+)(/[a-zA-Z0-9_-]+)?(.html)?(&co_parceiro=)?([0-9]+)?$ /detalhes_produto.asp?co_prod=$1&co_parceiro=$5
Que resultaria no seguinte:
/produto/5678/nome-do-produto.html&co_parceiro=1234
Util quando em sites de anunciantes envia um ID para identificação
fonte: http://forum.imasters.com.br/index.php?/topic/293277-url-rewrite-com-variavel/
ja tentou entrar em contato com o host ??? (Locaweb).
Colega, a Locaweb não dá suporte à programação. Nem adianta entrar em contato...
>
ja tentou entrar em contato com o host ??? (Locaweb).
Ted, usei o seu código, mas não aconteceu nada.
Fiz mais algumas pesquisas e consegui mais alguns exemplos, mas nada funcionou.
Vejam como ficou a minha última tentativa:
RewriteEngine on
RewriteRule ^([^?]+)\.asp$ $1 [NC,R=301,L]
RewriteCond %{REQUEST_FILENAME}.asp -f
RewriteRule (.*) $1.asp
RewriteRule ^/noticias_consulta\/([0-9]+)\.html$ /noticias_consulta.asp?id=$1
A última linha do código (acima) é onde tento alterar uma url específica.
Preciso que isso: www.site.com.br/noticias_consulta.asp?id=17
Se transforme nisso: www.site.com.br/noticias/17
Continuo contando com a colaboração de todos os que puderem ajudar!
Olá amigo,
Também tenho pesquisado muito sobre isso e vejo que esse tem sido um problema muito comum na locaweb.
Estou tentando usar esse componente, porém sem sucesso. Até agora além de tirar o .ASP consegui bloquear o download do .htaccess.
Mas durante os testes encontrei um problema. Ao usar o código, não consegui logar no gerenciador de conteúdo do site que está em um subdiretório. Existe a possibilidade de dizer que o mesmo não seja interpretado pelo ISAPI Rewrite?
O meu código está assim:
RewriteEngine On
RewriteCompatibility2 On
RepeatLimit 200
RewriteBase /
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+)\.asp$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.asp -f
RewriteRule (.*) $1.asp
RewriteRule ^/produtos/([a-z,0-9,_-]+)-([0-9]+).html$ /produtos_detalhe.asp?ID=$1 [QSA]
Colega, pois é, este componente não tem muitas fontes de pesquisa, pois os servidores com Windows 2008 só rodam o Isapi Rewrite 3, e a maioria dos tutoriais referem-se apenas à versão 2. Em relação ao seu problema, eu também encontrei esta mesma dificuldade, mas depois de muito quebrar a cabeça e quase desistir do Isapi, eis que a solução mais simples resolveu a questão do login. No meu caso, eu uso o SSL para logar, e bastou tirar o .ASP da url no campo ACTION do FORM que deu certo.
Era assim:
<form method="post" name="login" id="login" action="https://ssl123.websiteseguro.com/site/admin/login.asp?action=login"></form>
Ficou assim:
<form method="post" name="login" id="login" action="https://ssl123.websiteseguro.com/site/admin/login?action=login"></form>
E foi isso. Tente no seu caso e, se não der certo, poste o código do seu login que tento te ajudar. E se conseguir mais alguma evolução, posta por aqui também, ok?
Um abraço!
>
Olá amigo,
Também tenho pesquisado muito sobre isso e vejo que esse tem sido um problema muito comum na locaweb.
Estou tentando usar esse componente, porém sem sucesso. Até agora além de tirar o .ASP consegui bloquear o download do .htaccess.
Mas durante os testes encontrei um problema. Ao usar o código, não consegui logar no gerenciador de conteúdo do site que está em um subdiretório. Existe a possibilidade de dizer que o mesmo não seja interpretado pelo ISAPI Rewrite?
O meu código está assim:
RewriteEngine On
RewriteCompatibility2 On
RepeatLimit 200
RewriteBase /
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+)\.asp$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.asp -f
RewriteRule (.*) $1.asp
RewriteRule ^/produtos/([a-z,0-9,_-]+)-([0-9]+).html$ /produtos_detalhe.asp?ID=$1 [QSA]
>
Colega, pois é, este componente não tem muitas fontes de pesquisa, pois os servidores com Windows 2008 só rodam o Isapi Rewrite 3, e a maioria dos tutoriais referem-se apenas à versão 2. Em relação ao seu problema, eu também encontrei esta mesma dificuldade, mas depois de muito quebrar a cabeça e quase desistir do Isapi, eis que a solução mais simples resolveu a questão do login. No meu caso, eu uso o SSL para logar, e bastou tirar o .ASP da url no campo ACTION do FORM que deu certo.
Era assim:
<form method="post" name="login" id="login" action="https://ssl123.websiteseguro.com/site/admin/login.asp?action=login"></form>
Ficou assim:
<form method="post" name="login" id="login" action="https://ssl123.websiteseguro.com/site/admin/login?action=login"></form>
E foi isso. Tente no seu caso e, se não der certo, poste o código do seu login que tento te ajudar. E se conseguir mais alguma evolução, posta por aqui também, ok?
Um abraço!
>
Olá amigo,
Também tenho pesquisado muito sobre isso e vejo que esse tem sido um problema muito comum na locaweb.
Estou tentando usar esse componente, porém sem sucesso. Até agora além de tirar o .ASP consegui bloquear o download do .htaccess.
Mas durante os testes encontrei um problema. Ao usar o código, não consegui logar no gerenciador de conteúdo do site que está em um subdiretório. Existe a possibilidade de dizer que o mesmo não seja interpretado pelo ISAPI Rewrite?
O meu código está assim:
RewriteEngine On
RewriteCompatibility2 On
RepeatLimit 200
RewriteBase /
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+)\.asp$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.asp -f
RewriteRule (.*) $1.asp
RewriteRule ^/produtos/([a-z,0-9,_-]+)-([0-9]+).html$ /produtos_detalhe.asp?ID=$1 [QSA]
iai pessoal nenhuma solução ainda? estou com o mesmo problema de vcs, procuro, procuro e nao acho nada que funcione.
minha URL é assim: http://www.meusite.com.br/produtos.asp?lang=pt_BR&tipo_busca=subcategoria&codigo_categoria=1&codigo_subcategoria=13
e gostaria que ela aparecesse assim: http://www.meusite.com.br/produtos/pt/estampas/bebe
a regra que tentei foi essa abaixo.
RewriteRule ^/produtos/([a-z,0-9,_-]+)/([0-9]+)/([0-9]+)$ /produtos.asp?lang=$1&tipo_busca=subcategoria&codigo_categoria=$2&codigo_subcategoria=$3 [QSA]
Nada ainda! Não consegui fazer funcionar de jeito nenhum. Torço para que algum colega que saiba possa nos ajudar.
Um abraço!
Tente assim
RewriteEngine onRewriteRule noticias_consulta/id/(.)/ noticias_consulta?id=$1RewriteRule noticias_consulta/id/(.) noticias_consulta?id=$1
Pow será que alguem pode ajudar?
Estou usando o seguinte código abaixo e ele nao funciona. Está rodando em servidor windows da locaweb.
Estou salvando o seguinte código na pasta /web/ do servidor
Para garantir salvei o codigo como .htaccess e como httpd.ini e joguei na pasta /web/
RewriteEngine on
RewriteCompatibility2 On
RepeatLimit 200
RewriteBase
RewriteRule ^/Noticia/id/([0-9]+)?.html /Noticia.asp?id=$3
Quando tento acessar o url www.site.com/noticia/id/1.html a pagina nao é encontrada
alguem pode dar uma dica?
Velho tenta assim
RewriteEngine onRewriteRule noticia/id/(.)/ noticia.asp?id=$1RewriteRule noticia/id/(.) noticia.asp?id=$1vai ter que acessar assim
http://www.meusite.com/noticia/id/69/
O codigo abaixo funcionou finlamente
RewriteEngine on
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+)\.asp$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.asp -f
RewriteRule (.*) $1.asp
esse codigo faz com que todas as páginas asp senha acessadas sem o .asp, exemplo o link www.meusite.com/pagina.asp via ser acessado apenas por www.meusite.com/pagina
O problema é que isso alterou todos os links da loja virtual e deu erro nos formularios entao eu retirei o arquivo. Tomei o mair susto foi que depois de remocer o codigo .htaccess a configuração continuou por muito tempo. Depois de horas voltou o normal. O atendente da locaweb disse que pra votlar ao normal somente quando o servidor reiniciar. Existe uma forma de retirar a função sem ter que esperar o servidor reiniciar?
Obrigado , sua dica funcionou
#Dentro da pasta /web/ no servidor locaweb#Arquivo .htaccessRewriteEngine onRewriteRule noticia/id/(.)/ noticia.asp?id=$1RewriteRule noticia/id/(.) noticia.asp?id=$1
Como posso passar mais um valor alem do id? exemplo noticia.asp?id=1&data=20122009?
Uma dica que acho importante informar é que ao usar os URLs Amigáveis, caso você perceba que sua configuração de imagens e arquivos CSS seja perdida, modifique os urls de cada imagens e arquivos da seguinte forma:
DE
<img src="imagens/logomarca.gif">
PARA
<img src="/imagens/logomarca.gif">
Testei aqui e funcionou.
Pessoal, está correto? é assim mesmo que resolvemos esse problema?
Para transformar isso
http://www.site.com.br/noticia.asp?id=1&data=20122009nisso
http://www.site.com.br/noticia/id/1/data/20122009/Faça isso
RewriteEngine onRewriteRule noticia/id/(.)/data/(.)/ noticia.asp?id=$1&data=$2RewriteRule noticia/id/(.)/data/(.) noticia.asp?id=$1&data=$2Mais no caso como a url utiliza apenas parametros de ids eu aconselho tu a fazer assim
RewriteEngine onRewriteRule noticia-id-(.)-data-(.).htm$ noticia.asp?id=$1&data=$2O resultado seria este
http://www.site.com.br/noticia-id-1-data-20122009.htmEm relação ao seu último post, tem que utilizar os caminhos deste jeito
<img src="/imagens/logomarca.gif" />Não só quando esta se usando Rewrite não, tem que se usar sempre cara... desta forma tu não se perderá na aplicação, eu sempre utilizei desta forma é muito mais prático.
[]'s
Pessoal, vi toda a movimentação de vocês aqui no tópico e agradeço a todos os que estão colaborando.Eu testei todas as sugestões de vocês até aqui, que são muito boas, mas nada funcionou. Eu gostaria que o .asp saísse de todas as urls e, na página de consulta das notícias, gostaria de tratar a url dela.Seria assim:1) todas as páginas sem o .asp (isto eu já consegui)2) tratar as urls da página de consulta de notícias, assim:atualmente é assim:
noticias_consulta.asp?id=20
gostaria que ficasse assim:
noticias_consulta/id/20
ou assim:
noticias/20
Testei de diversas formas e, no final, o meu código ficou assim: RewriteEngine onRewriteRule ^([^?]+).asp$ $1 [NC,R=301,L]RewriteCond %{REQUEST_FILENAME}.asp -fRewriteRule (.) $1.aspRewriteRule noticias_consulta/id/(.)/ noticias_consulta.asp?id=$1RewriteRule noticias_consulta/id/(.*) noticias_consulta.asp?id=$1
Este código aí de cima tira o .asp, mas na página noticias_consulta, ele não faz nada.Para quem quiser ver o site, é este: www.yrt.com.brObrigado a todos novamente!
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
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...
Onedev faça assim
para deixar esta url
http://www.compraseg.com.br/produtos_descricao.asp?lang=pt_BR&codigo_produto=139assim
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=$2Se você quiser deixar assim
http://www.compraseg.com.br/produtos_descricao-lang-pt_BR-codigo_produto-139.htmconfigure o rewrite assim
RewriteEngine onRewriteRule produtos_descricao-lang-(.)-codigo_produto-(.).htm$ produtos_descricao.asp?lang=$1&codigo_produto=$2[]'s
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=$1Eu 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/
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=$4acessa assim
http://www.compraseg.com.br/produtos_descricao/lang/pt_BR/codigo_produto/139/
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.
melhor tutorial:
http://wiki.locaweb.com.br/pt-br/Isapi_Rewrite