marques de réécriture d'URL tous les liens de mêmes motifs après avoir visité tout lien réécrite dans ASP.NET
-
27-10-2019 - |
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" />
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/' />