【问题标题】:How to redirect Homepage.aspx to an MVC default route?如何将 Homepage.aspx 重定向到 MVC 默认路由?
【发布时间】:2011-01-07 13:59:38
【问题描述】:

我们正在开发一个新系统来替换现有系统。

新系统是 ASP.NET MVC,所以我们定义到我们的控制器和操作的路由正常。

与传统 ASP.NET 一样的旧系统,因此 URL 包含大量 .aspx 页面。

我们希望设置重定向,以便当用户尝试访问 /Homepage.aspx(很多用户会将其添加为书签)时,他们将被重定向到新系统的默认路由,即 /

对我来说最好的方法是什么?

编辑: @Chance 在下面建议我指定路线:

routes.MapRoute("Homepage", "Homepage.aspx", new { controller = "controller", action = "homepage" });

这可行,但我想进行重定向,因为我不想在地址栏中出现Homepage.aspx。还有什么我可以做的吗?

【问题讨论】:

    标签: asp.net-mvc routing


    【解决方案1】:

    您可以查看following blog post,它说明了如何实现将执行 301 永久重定向的传统路由处理程序。

    【讨论】:

    • 这成功了,但应该注意博客文章中的代码本身不起作用。但是,他链接到的示例项目中的代码是:eworldui.net/files/MvcDemos/LegacyRouting.zip
    • 我尝试使用此示例,但在提琴手中没有看到 301,并且旧网址仍在浏览器中。在内部它重定向到我想要的视图,我如何在浏览器中显示新的 url?
    • 给定的链接,打不开。
    【解决方案2】:

    将此代码放入您的 global.asax 文件中:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {    
        if (Request.Url.ToString().ToLower().Contains("homepage.aspx"))
        {            
            // use RedirectPermanent for 301, or Redirect for 302
            Context.Response.RedirectPermanent("/");
        }
    }
    

    您也可以修改此代码以应用于其他旧的“.aspx”页面。

    【讨论】:

      【解决方案3】:

      你可以给你的默认控制器/动作一个额外的硬编码路由。即

      routes.MapRoute("Homepage", "Homepage.aspx", new { controller = "controller", action = "homepage" });

      【讨论】:

      • 这行得通,但我想做一个重定向,因为我不想在地址栏中出现Homepage.aspx
      • 这对我不起作用,除了上面的代码之外我还会缺少什么吗?我正在使用 MVC3。
      【解决方案4】:

      另一种选择是简单地创建一个静态页面,用元重定向替换 HomePage.aspx。这将允许您向用户显示一条消息,通知他们网站已更改,并敦促他们更新他们的书签。

      您可以通过为 404 创建一个指向静态页面或特定 URL 的自定义错误处理程序将其扩展到整个站点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-30
        • 1970-01-01
        • 2018-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多