【问题标题】:Bidirectional Route in ASP.NET RoutingASP.NET 路由中的双向路由
【发布时间】:2015-11-23 22:42:34
【问题描述】:

好的,这是交易:

我有一个类似于 mysite.com/UnitDetails.aspx?UnitID=123 的 aspx 页面

现在我已经设置了我的路由,以便能够接收 mysite.com/My/Path/123 之类的内容并将其重定向到 UnitDetails.aspx。这很好用。

但是,如果用户在 aspx 页面中键入,我还希望能够将用户重定向到干净的 url。例如,如果您将 mysite.com/UnitDetails.aspx?UnitID=123 加入书签,我希望它显示为 mysite.com/My/Path/123。

我怎样才能做到这一点?这是我现在在路由中的内容:

        RouteTable.Routes.MapPageRoute("unit_details", "{area}/{property}/{unit_id}", "~/UnitDetails.aspx")

【问题讨论】:

    标签: asp.net routing asp.net-routing


    【解决方案1】:

    好的,我想通了!

    只需将其添加到我在 Page_Load 后面的 UnitDetails.aspx 代码中:

            //issue a 301 if legacy route requested to boost SEO
        if (Request.Url.AbsolutePath.Contains("UnitDetails.aspx"))
        {
            var unit = BeachGuide.Models.Unit.GetById(Convert.ToInt32(Request.Params["UnitID"]));
            Response.RedirectPermanent(unit.relative_url);
        }
    

    所以现在如果他们请求新的 url,他们就不会陷入无限循环。如果他们请求旧网址,我们有一个基本案例,通过 301 重定向将他们重定向到新网址。这将帮助搜索引擎知道将新路由用作规范 url。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      • 2023-04-03
      • 2021-09-04
      • 1970-01-01
      • 2013-05-12
      • 2011-08-24
      相关资源
      最近更新 更多