代码之家  ›  专栏  ›  技术社区  ›  Manne

从传统ASP迁移到ASP.NET时如何处理链接重定向?

  •  3
  • Manne  · 技术社区  · 17 年前

    /some/path/old page.asp?foo=bar

    /其他/path/new page.aspx?qaz=bak

    在相当长的一段时间内,经典的ASP页面将与ASP.NET页面并行运行,随着时间的推移,单个页面将被其ASP.NET版本所取代。在可能的情况下,我希望从旧页面重定向到新页面,以防止用户收到404个错误,并保持页面上累积的PageRank。

    我的问题是,您将如何执行从经典ASP到新模板的重定向逻辑?显而易见的解决方案是用一些简单的VBScript替换old-page.asp,重定向到new-page.aspx,但从长远来看,我希望摆脱旧的.asp文件,因此我希望以这样的方式实现重定向,即在站点完全在.NET中运行后,它们也将存在。

    一个选项是将.asp扩展映射到asp.NET,并作为HttpHandler实现重定向,但我想在请求传递到asp.NET后,无法使经典asp引擎运行。

    2 回复  |  直到 14 年前
        1
  •  3
  •   user69889    17 年前

    当时我找到的最佳解决方案是在IIS中实现ISAPI重定向过滤器。这是在asp或asp.net运行时之前由IIS运行的应用程序。它将根据url或您想要的任何规则做出决定,是应该允许asp文件运行,还是应该重定向它们,或者使用url重写来处理请求。它并不总是一个干净的操作,因为它在您的网站请求之前运行,如果其他开发人员不知道它正在运行,那么稍后可能会出现混乱。所以,如果你走这条路,请确保你的网站有大量的评论或文档,让开发人员知道IIS正在运行中。。。

    http://www.codeproject.com/KB/ISAPI/isapiredirector.aspx

    祝你好运

        2
  •  1
  •   John Rose    17 年前

    您应该使用“HTTP 301-永久移动”响应代码,因为这正是它的设计目的。

    http://en.wikipedia.org/wiki/HTTP_301

    ISAPI重定向过滤器的工作原理是,它会将访问者重定向到新的URL。

    1. 要编写/维护的更多代码
    2. 书签和搜索引擎条目永远不会用新的正确URL更新
    3. 如果foo.asp被透明地重定向到bar.aspx,并且两者都被Google索引,那么在Google中,您将有两个指向相同内容的重复URL。这会阻塞搜索结果,我相信这实际上是违反他们的TOS的。
    推荐文章