IIS7 URL Rewrite - Add “www” prefix

后端 未结 4 1608
鱼传尺愫
鱼传尺愫 2020-12-03 16:57

How to force example.com to be redirected to www.example.com with URL rewriting in IIS7? What kind of rule should go into the web.config? Thanks.

4条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-03 17:28

    I'm not sure if this helps, but i opted to do this at the app level. Here's a quick action filter I wrote to do this.. Simply add the class somewhere in your project, and then you can add [RequiresWwww] to a single action or an entire controller.

    public class RequiresWww : ActionFilterAttribute
        {
            public override void OnActionExecuting(ActionExecutingContext filterContext)
            {
                HttpRequestBase req = filterContext.HttpContext.Request;
                HttpResponseBase res = filterContext.HttpContext.Response;
    
                //IsLocal and IsLoopback i'm not too sure on the differences here, but I have both to eliminate local dev conditions. 
                if (!req.IsLocal && !req.Url.Host.StartsWith("www") && !req.Url.IsLoopback)
                {
                    var builder = new UriBuilder(req.Url)
                    {
                        Host = "www." + req.Url.Host
                    };
    
                    res.Redirect(builder.Uri.ToString());
    
                }
    
                base.OnActionExecuting(filterContext);
            }
        }
    

    Then

    [RequiresWwww]
    public ActionResult AGreatAction()
    {
    ...
    }
    

    or

    [RequiresWwww]
    public class HomeController : BaseAppController 
    {
    ..
    ..
    }
    

    Hope that helps someone. Cheers!

提交回复
热议问题