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

时间:2009-04-06 14:44:08

标签: asp.net asp-classic

我有一个大型的Web项目,它从经典ASP迁移到ASP.NET(大约时间),并希望重定向来自旧地址的请求,例如:

  

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

到新地址:

  

/other/path/new-page.aspx?qaz=bak

在相当长的时间内,将会有与ASP.NET页面并行运行的经典ASP页面,随着时间的推移,各个页面将被其ASP.NET版本替换。在可能的情况下,我想从旧页面重定向到新页面以防止用户接收404错误,并且还要在页面上保留累积的PageRank。

我的问题是,你如何从经典ASP到新模板进行重定向逻辑?显而易见的解决方案是将old-page.asp替换为一些重定向到new-page.aspx的简单VBScript,但从长远来看,我想摆脱旧的.asp文件,所以我想实现重定向这种方式在网站完全在.NET中运行后也会存在。

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

2 个答案:

答案 0 :(得分:3)

几年前,我在一家电子商务公司遇到了同样的问题,我们将其网站升级为.NET。主要问题是我们不知道有多少客户在他们的收藏夹中有旧的asp页面,以及SEO的问题。是的,你可以将asp扩展名映射到ASP.net,但是你根本无法运行asp文件,所以这需要你更新所有的asp页面,这可能是不可行的。

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

如何在Code Project中实现这一点有一个很好的解释。去这里看看吧。 http://www.codeproject.com/KB/ISAPI/isapiredirector.aspx

祝你好运!

答案 1 :(得分:1)

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

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

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

然而,ISAPI重定向策略存在三个关键问题。

  1. 更多代码编写/维护
  2. 书签和搜索引擎条目永远不会使用新的和正确的网址进行更新
  3. 如果foo.asp被透明地重定向到bar.aspx并且两者都被Google编入索引,那么您在Google中的同一内容中会有两个重复的网址。这堵塞了​​搜索结果,实际上是违反了我认为的TOS。