如何在 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 永久重定向路由的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET 4.0 中进行 301 重定向?

如何在 asp.net 中使用 301 重定向

如何在 ASP.NET MVC 中强制执行关注点分离?

如何在 ASP.NET MVC 中执行辅助操作(即计算字段)?

asp.net 2005 中的 301 永久重定向

在ASP.NET MVC4中如何执行远程验证?