Frage

ich benutze UrlRewriter Um meine URLs in einer ASP.NET -Anwendung neu zu schreiben. Alles funktioniert gut und die Arbeit, die ich tun muss, ist in Ordnung.

Ich möchte umleiten ~/product/45/something zu ~/show_product_details.aspx?current_prod=45

Und es funktioniert gut. Aber das Problem ist, wenn ich bitte ~/product/45/something, Ich bekomme die Seite von ~/show_product_details.aspx?current_prod=45. Danach, wenn ich auf einen Link klicke wie wie ~/home.aspx, es lenkt mich erneut um ~/product/45/home.aspx.

Bitte schlagen Sie vor, wie Sie dies beheben können. Ich benutze diese Regel:

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

Lösung

Es klingt so, als ob die URLs in Ihrer ASP.NET -Anwendung nicht auf das Root der Anwendung gelöst werden, sondern relative Links, wodurch die Ordnerstruktur berücksichtigt wird.

Wenn Sie ASP.NET -Webformulare verwenden, müssen Sie sicherstellen, dass Sie beispielsweise die URL ausgeben, oder sicherstellen, dass der Hyperlink beispielsweise sicherstellen kann, dass der Hyperlink Runat = Server ist:

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

ODER:

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

Eine andere Möglichkeit, dies zu lösen, besteht darin, eine Basisreferenz in Ihrem HTML zu erhalten, die dem Browser mitteilt, dass alle Links auf der Seite auf dem angegebenen Pfad verwurzelt sein müssen:

In dem <head> Sektion:<base href='http://www.yourwebsite.com/' />

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top