URL重写使得访问ASP.NET中任何重写的链接后所有链接都具有相同的模式

发布于 2024-11-04 06:10:00 字数 712 浏览 1 评论 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" />   

I am using UrlRewriter to rewrite my urls in an ASP.NET application. Everything works fine and the work which I need to do is working ok.

I want to redirect ~/product/45/something to ~/show_product_details.aspx?current_prod=45

and it's working fine. But the problem is when I request ~/product/45/something, I am getting the page from ~/show_product_details.aspx?current_prod=45. After that when I click some link like ~/home.aspx, it again redirects me to ~/product/45/home.aspx.

Please suggest how to fix this. I am using this rule:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

糖果控 2024-11-11 06:10:00

听起来 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 中添加一个基本引用,它告诉浏览器页面上的所有链接都必须以指定路径为根:

部分中:根据href='http://www.yourwebsite.com/'/>

It sounds like the URLs in your ASP.NET application are not resolved to the root of the application, but rather are relative links, causing the folder structure to be taken into account.

If you are using ASP.NET Web Forms you need to ensure you either call ResolveUrl("~/home.aspx") when outputting the URL, or ensure that the hyperlink is runat=server, for example:

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

OR:

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

Another way you can resolve this is to have a base reference in your HTML, which tells the browser that ALL links on the page must be rooted at the specified path:

In the <head> section:<base href='http://www.yourwebsite.com/' />

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文