La riscrittura dell'URL crea tutti i collegamenti degli stessi schemi dopo aver visitato qualsiasi collegamento riscritto in ASP.NET
-
27-10-2019 - |
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" />
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/' />