网址转发无效路由?

时间:2012-09-25 16:03:26

标签: c# asp.net url-routing

我正在升级一个旧的asp.net webforms网站。我想让URL看起来更好,所以我正在使用路由系统,如下所示:

void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute("account settings",
        "settings/account/",
        "~/accountsettings.aspx");
}

这很好用。像mydomain.com/settings/account/这样的网址看起来更好。但是,仍然可以使用其物理位置访问该页面,如mydomain.com/accountsettings.aspx。我想将这些旧表格网址的请求转发给我的新网址。

最好的方法是什么?我可以使用一种简单的方法,例如RegisterRoutes吗?

1 个答案:

答案 0 :(得分:2)

我相信您需要让路由引擎知道使用IgnoreRoute忽略物理文件的路由:

routes.IgnoreRoute("accountsettings.aspx");

请仔细检查IgnoreRoute的语法,因为我不记得您是否需要包含相对路径或仅包含文件名。

一旦你有了工作,你就可以捕获它将生成的404,可能是在global.asax中的全局错误处理程序中,如果那是请求的路径,则重定向。此博客文章提供了如何在全局错误处理程序中捕获404的示例:http://www.andornot.com/blog/post/Handling-404-errors-with-ASPNET.aspx

如果这是一个公共网站并且您关注SEO,您可能还需要考虑使用http状态代码301指定它是永久重定向。这将告诉Google和其他搜索引擎现在旧网页存在新位置,您不会丢失该页面的价值。

希望有所帮助!