以编程方式添加www。 Controller操作的前缀

时间:2012-11-30 10:06:01

标签: asp.net-mvc

是否有一种简单的方法可以使用RedirectToAction方法向单个Action(或Controller)添加www前缀?

我尝试使用Redirect()但是给我一些其他问题。我认为它会重新启动会话。

更新

我添加了一个实现类似属性的类:

public class ExtendAttributes
{
    public class AddwwwPrefix : FilterAttribute, IAuthorizationFilter
    {
        public void OnAuthorization(AuthorizationContext filterContext)
        {

            string host = filterContext.HttpContext.Request.Url.Host;
            if (host.Contains("www."))
            {
                return; //It already contains www. so don't change it
            }
            else
            {
                host = "www." + filterContext.HttpContext.Request.Url.Host;
            }

            // redirect to HTTP  
            string url = "http://" + host + filterContext.HttpContext.Request.RawUrl;
            filterContext.Result = new RedirectResult(url);
        }
    } 
}

所以我可以这样使用它:

[ExtendAttributes.AddwwwPrefix]
   public ActionResult MyAction()
    {
      ...

1 个答案:

答案 0 :(得分:0)

您可以配置IIS来实现此目的。

在“绑定”下,添加网站所服务的所有主机名。

添加HTTP功能URL重写,并添加入站规则:

  • 匹配网址:请求的网址使用正则表达式匹配模式

模式:(.*)

  • 条件匹配所有

输入{HTTP_HOST}与模式^www\..*

不匹配
  • 操作操作类型重定向

重定向网址:http://(your target domain)/(R:1)

附加查询字符串,重定向类型Permanent (301)

根据您的需求进行调整。