marques de réécriture d'URL tous les liens de mêmes motifs après avoir visité tout lien réécrite dans ASP.NET

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

Question

J'utilise UrlRewriter de réécrire mes urls dans une application ASP.NET. Tout fonctionne très bien et le travail que je dois faire est de travailler ok.

Je veux redirect ~/product/45/something à ~/show_product_details.aspx?current_prod=45

et il va bien de travail. Mais le problème est quand je demande ~/product/45/something, je reçois la page de ~/show_product_details.aspx?current_prod=45. Après cela, lorsque je clique sur un lien comme ~/home.aspx, encore me redirige vers ~/product/45/home.aspx.

S'il vous plaît suggérer comment résoudre ce problème. J'utilise cette règle:

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

La solution

On dirait que les URL dans votre application ASP.NET ne sont pas résolus à la racine de l'application, mais plutôt des liens relatifs, ce qui provoque la structure des dossiers à prendre en compte.

Si vous utilisez ASP.NET Web Forms vous devez vous assurer que soit ResolveUrl d'appel ( « ~ / home.aspx ») lors de la sortie de l'URL, ou faire en sorte que le lien est runat = serveur, par exemple:

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

OU:

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

Une autre façon que vous pouvez résoudre c'est d'avoir une référence de base dans votre code HTML, qui indique au navigateur que tous les liens sur la page doivent être ancrés dans le chemin spécifié:

Dans la section <head>: <base href='http://www.yourwebsite.com/' />

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top