La riscrittura dell'URL crea tutti i collegamenti degli stessi schemi dopo aver visitato qualsiasi collegamento riscritto in ASP.NET

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

Domanda

sto usando UrlRewriter per riscrivere i miei URL in un'applicazione ASP.NET. Tutto funziona bene e il lavoro che devo fare è funzionare bene.

Voglio reindirizzare ~/product/45/something a ~/show_product_details.aspx?current_prod=45

E funziona bene. Ma il problema è quando lo richiedo ~/product/45/something, Sto ottenendo la pagina da ~/show_product_details.aspx?current_prod=45. Dopodiché quando faccio clic su un link come ~/home.aspx, mi reindirizza di nuovo a ~/product/45/home.aspx.

Si prega di suggerire come risolvere questo problema. Sto usando questa regola:

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

Soluzione

Sembra che gli URL nell'applicazione ASP.NET non siano risolti nella radice dell'applicazione, ma piuttosto sono collegamenti relativi, causando conto della struttura della cartella.

Se si utilizzano i moduli Web ASP.NET, è necessario assicurarsi di chiamare ResolveUrl ("~/Home.Aspx") quando si supera l'URL o assicurarsi che il collegamento ipertestuale sia runAt = server, ad esempio:

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

O:

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

Un altro modo in cui puoi risolvere questo è avere un riferimento di base nell'HTML, che dice al browser che tutti i collegamenti sulla pagina devono essere radicati sul percorso specificato:

Nel <head> sezione:<base href='http://www.yourwebsite.com/' />

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top