2

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

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

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

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

4

1 回答 1

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 和其他搜索引擎旧页面现在存在于新位置,并且您不会失去该页面的价值。

希望有帮助!

于 2012-09-25T18:25:02.867 回答