Asp.net mvc 将.cfm位置重定向到新位置的最佳方法.net mvc 3 IIS 7.5

Asp.net mvc 将.cfm位置重定向到新位置的最佳方法.net mvc 3 IIS 7.5,asp.net-mvc,redirect,http-status-code-301,Asp.net Mvc,Redirect,Http Status Code 301,我正在尝试确定将一组文件从旧站点(coldfusion)重定向到新站点(asp.net mvc 3)上的新位置的最佳方法 我想用301状态重定向这些页面,让引擎知道这是一个永久性的更改 目前,我在我的web.config中设置了一个自定义错误部分,可以将404重定向到主页,这对所有不再使用的旧链接都很有用,但它发送了一个302状态,我不想要,它将我所有的重定向发送到主页,从而不会给我从旧链接获得的SEO 我曾想过在IIS中将.cfm作为一个模块映射添加到我的.NETISAPI中,并通过添加标题将

我正在尝试确定将一组文件从旧站点(coldfusion)重定向到新站点(asp.net mvc 3)上的新位置的最佳方法

我想用301状态重定向这些页面,让引擎知道这是一个永久性的更改

目前,我在我的web.config中设置了一个自定义错误部分,可以将404重定向到主页,这对所有不再使用的旧链接都很有用,但它发送了一个302状态,我不想要,它将我所有的重定向发送到主页,从而不会给我从旧链接获得的SEO

我曾想过在IIS中将.cfm作为一个模块映射添加到我的.NETISAPI中,并通过添加标题将我的所有页面作为cfm创建,但后来意识到这需要做很多工作


有没有其他“更简单”的解决方案来实现这一点?

是的,HttpHandler。在web.congig中注册它以处理所有*.cfm URL(),实现将只是301重定向。最多10行代码

using System.Web; public class CfmHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { // redirect here, you have HttpContext ready } public bool IsReusable { // To enable pooling, return true here. // This keeps the handler in memory. get { return true; } } } 使用System.Web; 公共类CfmHandler:IHttpHandler{ 公共void ProcessRequest(HttpContext上下文){ //重定向到此,您已经准备好HttpContext } 公共布尔可重用{ //要启用池,请在此处返回true。 //这会将处理程序保留在内存中。 获取{return true;} } }
更多信息请访问:

感谢您的回复。对于这个新手的后续问题,很抱歉,但是这段代码到底会去哪里呢?编辑:还有,我如何告诉它哪些文件要重定向到哪里?我想这需要在我的路线中以某种方式处理?它是独立类,放在适合您的地方-在您的“基础设施”的“助手”文件夹中。。。至于映射,请参阅我发布的关于处理程序注册的链接。IIS将为特定的URL模式选择此处理程序,MVC甚至不会启动该请求(MVC也只是一个注册的处理程序,顺便说一句,您可以在一个应用程序中为不同的目的使用多个处理程序)还有一个问题:当我实际创建cfm文件时,这个处理程序工作得很好。但我希望它能够重定向文件,而实际上驱动器上没有物理文件。目前,我的customErrors元素正在接管和重定向,就好像它是404一样,因为这些文件不存在。有没有办法让它覆盖自定义错误?这是我为处理程序准备的节点:还需要在路由配置中添加一个忽略路由,请参阅以获取更多信息