0

我正在使用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" />   
4

1 回答 1

1

听起来您的 ASP.NET 应用程序中的 URL 没有解析到应用程序的根目录,而是相对链接,因此需要考虑文件夹结构。

如果您使用的是 ASP.NET Web 窗体,则需要确保在输出 URL 时调用 ResolveUrl("~/home.aspx"),或者确保超链接为 runat=server,例如:

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

或者:

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

解决此问题的另一种方法是在 HTML 中添加一个基本引用,它告诉浏览器页面上的所有链接都必须以指定路径为根:

在该<head>部分:<base href='http://www.yourwebsite.com/' />

于 2011-04-30T12:58:50.980 回答