繁体   English   中英

如何正确使用旧的ASP站点URL重定向到MVC路由?

How redirect to MVC routes using a old asp site url correctly?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

让我解释。 最近,我将经典的ASP应用程序迁移到.net MVC4。 旧站点由许多html和aspx页面组成,即:

  • 的index.html
  • book.html
  • contactus.aspx

自然地,旧的asp网站可以通过www.library.com/index.html、www.library.com/book.html、www.library.com/contactus.aspx等网址访问。

现在,可以通过路由器访问当前的MVC站点,即www.library.com/Home、www.library.com/Book、www.library.com/Contact

很多公司客户尝试使用旧的URL访问新站点,这是一个问题,我需要从代码中找到解决方案。

我尝试了一些解决方案,但是不起作用。

解决方案一

对于旧的aspxs页面,可以在新站点的根目录上创建与旧站点同名的aspx页面,并从codebehind重定向到Page_Load

//Create contactus.aspx on root directory project and redirect
public partial class Contact : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.RedirectToRoute(new { controller = "Contact", action = "Index" });
    }
} 

对于html页面,您可以定义一个简单的meta标签刷新

//Create a html page, i.e., index.html
<meta http-equiv="refresh" content="0; url=http://library.com/Home" />
<p><a href="http://example.com/">Redirect</a></p>

这不是一个可行的解决方案,必须为每个所需的重定向创建一个html页面或aspx页面。

解决方案2

我尝试在Global.asax上定义重定向条件,但不起作用

    protected void Application_BeginRequest(object sender, EventArgs e )
    {
        string url = Request.Url.ToString().ToLower();

        if (url.Contains("index.html"))
            Context.Response.RedirectPermanent("/Home");

        else if (url.Contains("book.html"))
            Context.Response.RedirectPermanent("/Book");

        else if (url.Contains("contactus.aspx"))
            Context.Response.RedirectPermanent("/Contact");
    }

解决方案3

我尝试在RouteConfig.cs上定义要重定向的地图,但也无法正常工作

        //Trying redirect on RegisterRoutes() in RouteConfig.cs
        routes.MapRoute(
            name: "Home",
            url: "index.html",
            defaults: new { controller = "Home", action = "Index" }
        );

        routes.MapRoute(
            name: "Book",
            url: "book.html",
            defaults: new { controller = "Book", action = "Index" }
        );

        routes.MapRoute(
            name: "Contact",
            url: "contactus.aspx",
            defaults: new { controller = "Contact", action = "Index" }
        );

当用户尝试正确访问旧的ASP网站网址时,如何重定向到新的MVC路由? 需要找到快速,经济的解决方案,谢谢您的帮助。

1 个回复

您需要根据正则表达式模式进行网址重写。 参考此线程 ,OP(@Eilimint)已内联更新了解决方案。 这可能是一个优雅的解决方案,允许我们在不更改代码的情况下进行覆盖。

<rule name="Redirect to new domain" stopProcessing="true">
  <match url="^(.*)$" />
  <conditions>            
    <add input="{HTTP_HOST}" matchType="Pattern" pattern="^olddomain(:\d+)?$" />
  </conditions>
  <action type="Redirect" url="https://my.newdomain.io/{R:1}" redirectType="Permanent" />
</rule>
2 ASP.NET:POST 重定向后 MVC 站点与路由不匹配

问题 我有一个旧的 ASP.net Web 表单项目,我正在尝试将其慢慢转换为 MVC 网站。 旧站点是在多个项目中构建的——请参见下面的示例。 当用户未经身份验证时,他们将被发送到登录项目(webforms),然后重定向回新的 MVC 项目。 无论loginproject和product1 , ...

4 使用旧哈希路由时重定向用户

我们将旧的应用程序移植到Ember,在这样做的过程中,我们对URL结构进行了一些更改。 主要的是我们不再使用哈希路由了。 在过去,我们的路线看起来像domain.com/#profile/some_id/ (单数,id,并带有哈希),在新的路线上它将类似于domain.com/profile ...

6 重定向到URL-ASP.NET与MVC

我的问题有点类似于如何从MVC3 / Razor中的操作获取响应“流”? 但我尝试了他们的方法,但没有成功。 细节 我正在使用MVC3,.net4,c#, javascript和第3方组件来打开文件。 我有一个viewStuff.js连接到ViewFile.aspx ...

9 MVC路由重定向

我有一个网络服务项目,该项目正在扩展以承载多个API,而不仅仅是一个API,因此我希望在不破坏旧版本的情况下清理路由。 主要API用于放置名为API的控制器并接受如下参数: 现在,我有一个名为API的区域,它将在各自的控制器中容纳每个API,路由如下所示: 我仍然需要旧路由对已 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM