我正在升级一个旧的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
吗?
答案 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和其他搜索引擎现在旧网页存在新位置,您不会丢失该页面的价值。
希望有所帮助!