301在Asp.Net MVC中重定向

时间:2010-12-18 14:11:00

标签: asp.net asp.net-mvc-2 http-status-code-301

我有一个Multiculture MVC2网站。 实际上我的主页可以通过以下路径访问:

http://mydomain.com
http://mydomain.com/
http://mydomain.com/en
http://mydomain.com/en/
http://mydomain.com/en/home
http://mydomain.com/en/home/

我想要的是以上所有路径都会将301重定向到以下内容:

http://mydomain.com/en

这样我就不必在不同的网址之间共享pagerank。

请注意,en字符串是动态的,并为网站设置了文化。

我是Asp.Net MVC的新手,有人可以发布一些代码吗? 感谢

2 个答案:

答案 0 :(得分:2)

您可以创建自定义操作结果。请参阅此主题:http://forums.asp.net/p/1337938/2700733.aspx

答案 1 :(得分:2)

类似这样的事情

public class PermanentRedirectResult : ViewResult
{
    public string Url { get; set; }

    public PermanentRedirectResult(string url)
    {
        if (string.IsNullOrEmpty(url))
            throw new ArgumentException("url is null or empty", url);
        this.Url = url;
    }

    public override void ExecuteResult(ControllerContext context)
    {
      if (context == null)
        throw new ArgumentNullException("context");
      context.HttpContext.Response.StatusCode = 301;
      context.HttpContext.Response.RedirectLocation = Url;
      context.HttpContext.Response.End();
    }
}

并使用此

调用它
  

返回新的   PermanentRedirectResult( “/ myurl”);