Ir para conteúdo

Arquivado

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

Murilo Eduardo B. Santos

[Resolvido] URL Amigaveis/Roteamento

Recommended Posts

Galera, já pesquisei o dia todo, testei códigos:

http://www.ecode10.c...rariamente.aspx

http://www.thiagorog...l-em-ASPNet.asp

 

mas não consigo fazer uma url localhost:2084/default.aspx?id=12121&cat=1212 virar algo do tipo localhost:2084/default/1212/12121.aspx

 

Li que o ISS pode influenciar, mas se fosse o caso, como o cara de um dos artigos ai roda o exemplo na porta 33432(o que entendo que ele não está rodando pelo ISS). Vi exemplos usando o webconfig, mas nada funcionou.

 

 

Alguma ideia?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Murilo, você pode tem n opções.

com base nesses tutoriais ai você deve ter problemas com o caminho dos arquivos... Já apanhei basntannte.

 

A MS tem um componente URL Rewrite proprio que instala no servidor e fica tudo mais facil, bastando você crias suas regras no web.config.

 

Se você trabalhar com MVC as URL já são amigáves.

 

Mas se realmente você precisar usar webforms, vai postanto seus codigos que nós ajudamos.!

Compartilhar este post


Link para o post
Compartilhar em outros sites

arrumei uma dll, e puis os seguintes pedaços de código no web.config:

 

<configSections>
   <section name="rewriter"
            requirePermission="false"
            type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
</configSections>

<httpModules>
     <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
   </httpModules>

<rewriter>
   <rewrite url="~/post/categoria/(.+)" to="~/post.aspx?intidcategoria=$1"/>
</rewriter>

 

Até então estava querendo fazer a URL localhost://post.aspx?intidcategoria=2211 virar localhost://post/categoria/2211

 

mas percebi que não daria certo, que essa segunda url não existe de verdade(sei lá, achava que só mudava a barra de endereço), fiz uma hora o seguinte:

 

<rewrite url "~/post.aspx?intidcategoria=$1" to="~/post/categoria/(.+)"/>

 

a vi que redirecionou para uma página que não existe, mas beleza, ai mudei a forma de gerar os links do menu

 

 

o problema agora é que o css vai pro espaço, não tá adiantando passar ~/ nos caminhos]

 

ele tá querendo jogar o css assim: localhost:2084/post/categoria/App_Themes/Theme/default.css

na verdade deveria ser assim: localhost:2084/App_Themes/Theme/default.css

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muda o caminho de todos seus arquivos de "~/" pra "/".

Exemplo:

de ~/App_Themes/Theme/default.css

para /App_Themes/Theme/default.css

 

Faça isso com as imagens tb, e com imagens usadas como back-groud no CSS, dai vai funcionar tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá esse erro:

 

HTTP Error 404.0 - Not Found

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

 

 

Agora fico na dúvida se a dll que não está funcionando, ou se ela está redirecionando diferente no www. ai dando endereço inválido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara deve esta faltando algo na sua aplicação, por que erro 404 é de não localização do arquivo aspx.

Compartilhar este post


Link para o post
Compartilhar em outros sites

os arquivos estão de boa, quando tento inserir as querystring na mão na barra de endereço entra na página, agora ou tá zuado minha regra que nao quer funcionar no servidor ou nem tá passando por ela, segue como estou usando:

 

<rewriter>

<rewrite url="~/categoria/(.+)/(.+)" to="~/post.aspx?intidcategoria=$1"/>

<rewrite url="~/post/(.+)/(.+)/(.+)" to="~/post.aspx?intidcategoria=$1&intidpost=$2"/>

<rewrite url="~/default/(.+)" to="~/default.aspx?strdata=$1"/>

</rewriter>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei o rewrite 2.0, que é instalado no próprio iis.

 

imagem do iss com o rewrite: https://docs.google.com/leaf?id=0B5pgNzNT1AK-NGY2M2VhOTctZTExZC00MjhjLThmZTgtYTY0ZWY2N2E0NWMx&hl=pt_BR&authkey=CPzRhdME

 

 

ele está funcionado, mas tipo, na primeira vez entra:

 

localhost/blog/categoria/4/conforto-esta-na-moda

 

e na segunda:

 

localhost/blog/categoria/4/categoria/2/dicas-do-sapato-confortavel

 

nao está 'limpando'

 

o link é :

 

<a href="categoria/<%# DataBinder.Eval(Container.DataItem, "INTIDCATEGORIA")%>/<%#DataBinder.Eval(Container.DataItem, "STRDESCRICAOURL")%>"><%# DataBinder.Eval(Container.DataItem, "STRDESCRICAO")%></a>

 

já tentei começar com <a href="/categoria

 

mas dá erro. alguém sabe trabalhar com esse cara?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta:

<a href='<%# string.Format("/categoria/{0}/{1}", Eval("INTIDCATEGORIA"), Eval("STRDESCRICAOURL") ) %>'><%# Eval("STRDESCRICAO") %></a>

Compartilhar este post


Link para o post
Compartilhar em outros sites

já estou quase desistindo, quando consigo usando a dll intelligencia nao consigo fazer ela rodar no iis, agora com esse cara rodo no iis mas não consigo 'apagar' a duplicação com aquele /

 

 

isso é o que tá no iis

 

pattern:

categoria/([0-9]+)/([_0-9a-z-]+)

 

rewrite url:

post.aspx?intidcategoria={R:1}

 

tou ferrado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara com esse URL no IIS não tem problema nao, é facin, essa regra ai esta no seu web.config. e tem q funcionar. ja usei em N projetos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

está funcionado, mas o link vai aumentando conforme vou clicando em mais categorias. e quando passo / no começo para nao dar esse problema não acha a página. reparei que acontece algo do tipo quando passo a barra: ai página está localhost/blog/, o link está localhost/categoria.... perdeu o blog, acho que por isso não tá achando a página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta:

 

 

pattern:

~/categoria/([0-9]+)/([_0-9a-z-]+)

 

rewrite url:

~/post.aspx?intidcategoria={R:1}

Compartilhar este post


Link para o post
Compartilhar em outros sites

achei uma forma de resolver meu problema, passando links completos, por exemplo "http://localhost/teste" ou "http://meusite.com.br/teste", mas para isso precisaria guardar no webconfig uma tag <url>, ai na hora de montar os links concatenava o valor de <url>, mas não sei como fazer isso no código aspx.

 

Resolvi o problema deixando uma tag no webconfig com "http://localhost/blog/" e quando for publicar é só mudar pro endereço do site:

 

 

link:

 

<a href="<%= System.Configuration.ConfigurationManager.AppSettings["url"] %>categoria/<%# DataBinder.Eval(Container.DataItem, "INTIDCATEGORIA")%>/<%#DataBinder.Eval(Container.DataItem, "STRDESCRICAOURL")%>"><%# DataBinder.Eval(Container.DataItem, "STRDESCRICAO")%></a>

 

No iis:

 

pattern: categoria/([0-9]+)/([_0-9a-z-]+)

rewrite url: post.aspx?intidcategoria={R:1}

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.