A reescrita de URL faz com que todos os links tenham os mesmos padrões depois de visitar qualquer link reescrito no ASP.NET

StackOverflow https://stackoverflow.com/questions/5841671

Pergunta

Estou usando UrlRewriter para reescrever meus urls em um aplicativo ASP.NET.Tudo funciona bem e o trabalho que eu preciso fazer está funcionando bem.

Quero redirecionar ~/product/45/something para ~/show_product_details.aspx?current_prod=45

e está funcionando bem.Mas o problema é que quando eu solicito ~/product/45/something, estou obtendo a página de ~/show_product_details.aspx?current_prod=45.Depois disso, quando clico em algum link como ~/home.aspx, ele me redireciona novamente para ~/product/45/home.aspx.

Por favor, sugira como corrigir isso.Estou usando esta regra:

          <add name="Gallery1" virtualUrl="^~/product/(.*)/(.*)" 
                 rewriteUrlParameter="ExcludeFromClientQueryString"
                destinationUrl="~/show_product_details.aspx?current_prod=$1"
         ignoreCase="true" />   
Foi útil?

Solução

Parece que os URLs em seu aplicativo ASP.NET não são resolvidos para a raiz do aplicativo, mas sim links relativos, fazendo com que a estrutura de pastas seja levada em consideração.

Se estiver usando ASP.NET Web Forms, você precisa ter certeza de chamar ResolveUrl ("~ / home.aspx") ao gerar o URL ou garantir que o hiperlink seja runat= server, por exemplo:

<a runat="server" href="~/home.aspx">Home</a>

OU:

<a href='<%# ResolveUrl("~/home.aspx") %>'>Home</a>

Outra maneira de resolver isso é ter uma referência de base em seu HTML, que informa ao navegador que TODOS os links da página devem ser enraizados no caminho especificado:

Na seção <head>: <base href='http://www.yourwebsite.com/' />

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top