将子文件夹URL重定向到子域

时间:2012-12-01 13:06:21

标签: .net url redirect azure

我想将abc.com/yyy重定向到xxx.abc.com,我可以知道如何在域管理器中实现此目的吗?

实际上这是一个在Azure中托管的.net MVC项目,我可能知道这是在域管理器上完成的吗?

感谢。

2 个答案:

答案 0 :(得分:2)

为了完成这项工作,您需要做一些事情:

  1. 为您的abc.com域 xxx.abc.com 配置 CNAME ,其中指向 yourapplication.cloudapp.net (您不要要在Azure门户中执行此操作,您可以在管理域设置的网站上执行此操作。
  2. / yyy 子目录配置为Web角色中的其他站点,如下所述:How to Configure a Web Role for Multiple Web Sites。这样您就可以将主机标题( xxx.abc.com )映射到子目录( /yyy.com )。完成此操作后,您的子目录也将通过 xxx.abc.com
  3. 提供
  4. 如果您还想设置从 abc.com/yyy xxx.abc.com 的重定向重定向,则需要设置网址重写操作类型设置为重定向as explained here)。

答案 1 :(得分:0)

这也可以通过global.asax以编程方式完成。 我正在使用它从

重定向
  

http://www.mysite.com

  

http://mysite.com

这是执行此操作的代码。

public class SubdomainRoute : RouteBase
{
    public override RouteData GetRouteData(HttpContextBase httpContext)
    {
        RouteData returnValue = null;
        var url = httpContext.Request.Headers["HOST"];
        var index = url.IndexOf(".");
        if (index < 0)
            return returnValue;


        string subDomain = url.Substring(0, index);
        switch (subDomain.ToLowerInvariant())
        {
            case "www":
                returnValue = new RouteData(this, new MvcRouteHandler());
                returnValue.Values.Add("controller", "Redirect");
                returnValue.Values.Add("action", "RedirectToRoot");

                break;
                /*case "live":
                returnValue = new RouteData(this, new MvcRouteHandler());
                returnValue.Values.Add("controller", "Database");
                returnValue.Values.Add("action", "Index");
                returnValue.Values.Add("liveMode", true); // set parameter to 'true';
                break;*/
            default: // not a supported domain, return null;
                break;
        }
        return returnValue;
    }

    /// <summary>
    /// required override
    /// </summary>
    /// <param name="requestContext"></param>
    /// <param name="values"></param>
    /// <returns></returns>
    public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
    {
        return null;
    }


}

 public static void RegisterRoutes(RouteCollection routes)
    {

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.Add(new SubdomainRoute());

}

当找到您要搜索的子域时,它将重定向到某个操作。确保此操作会将Redirect返回到您想要的任何路径。