如何在 ASP.Net MVC 中执行 301 永久重定向路由
Posted
技术标签:
【中文标题】如何在 ASP.Net MVC 中执行 301 永久重定向路由【英文标题】:How do you do a 301 permanant redirect route in ASP.Net MVC 【发布时间】:2011-01-14 02:02:27 【问题描述】:如何在 ASP.NET MVC 中做一个 HTTP 301 永久重定向路由?
【问题讨论】:
302 是临时重定向 ... 301 是永久重定向 【参考方案1】:创建一个继承自 ActionResult 的类...
public class PermanentRedirectResult : ActionResult
public string Url get; set;
public PermanentRedirectResult(string url)
this.Url = url;
public override void ExecuteResult(ControllerContext context)
context.HttpContext.Response.StatusCode = (int)HttpStatusCode.MovedPermanently;
context.HttpContext.Response.RedirectLocation = this.Url;
context.HttpContext.Response.End();
那就用吧……
public ActionResult Action1()
return new PermanentRedirectResult("http://***.com");
一个更完整的答案,将重定向到路由...Correct Controller code for a 301 Redirect
【讨论】:
如果我试图重定向不再存在的旧 .html 文件怎么办?我可以使用路由来处理这些吗?一般的做法是什么? 我可能会选择像 blog.eworldui.net/post/2008/04/… 这样的自定义路由,或者我最好使用带有单独配置的 http 模块,这样您就可以轻松地逐步退出和加入。hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx mvc 中已经有了 RedirectPermanent。看看***.com/a/16980631/532517【参考方案2】:您想要一个 301 重定向,a 302 is temporary, a 301 is permanent。在本例中,context
是 HttpContext:
context.Response.Status = "301 Moved Permanently";
context.Response.StatusCode = 301;
context.Response.AppendHeader("Location", nawPathPathGoesHere);
【讨论】:
第一行不需要,因为 StatusCode 也会设置适当的标签。状态已弃用。以上是关于如何在 ASP.Net MVC 中执行 301 永久重定向路由的主要内容,如果未能解决你的问题,请参考以下文章