URL書き換えは、ASP.NETの書き換えられたリンクにアクセスした後、同じパターンのすべてのリンクを作成します

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

質問

私は使っている 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/' />

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top