URL書き換えは、ASP.NETの書き換えられたリンクにアクセスした後、同じパターンのすべてのリンクを作成します
-
27-10-2019 - |
質問
私は使っている UrlRewriter
ASP.NETアプリケーションでURLを書き換える。すべてが正常に機能し、私がしなければならない仕事は大丈夫です。
リダイレクトしたい ~/product/45/something
に ~/show_product_details.aspx?current_prod=45
そして、それは正常に動作しています。しかし、問題は私が要求するときです ~/product/45/something
, 、ページを取得しています ~/show_product_details.aspx?current_prod=45
. 。その後、リンクをクリックします ~/home.aspx
, 、それは再び私をリダイレクトします ~/product/45/home.aspx
.
これを修正する方法を提案してください。私はこのルールを使用しています:
<add name="Gallery1" virtualUrl="^~/product/(.*)/(.*)"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/show_product_details.aspx?current_prod=$1"
ignoreCase="true" />
解決
ASP.NETアプリケーションのURLはアプリケーションのルートに解決されるのではなく、相対的なリンクであり、フォルダー構造を考慮しているように聞こえます。
ASP.NET Webフォームを使用している場合は、URLを出力するときにResolveUrl( "〜/home.aspx")を呼び出すか、ハイパーリンクがrunat =サーバーであることを確認する必要があります。
<a runat="server" href="~/home.aspx">Home</a>
また:
<a href='<%# ResolveUrl("~/home.aspx") %>'>Home</a>
これを解決できるもう1つの方法は、HTMLに基本参照を持つことです。これは、ページ上のすべてのリンクが指定されたパスにルート化されている必要があることをブラウザに伝えることです。
の中に <head>
セクション:<base href='http://www.yourwebsite.com/' />
所属していません StackOverflow