2012-12-01 105 views
1

我想將abc.com/yyy重定向到xxx.abc.com,我可以知道我如何在域管理器中實現此目的?將子文件夾URL重定向到子域

實際上,這是一個在Azure中託管的.net MVC項目,我可能知道這是在域管理器中完成的嗎?

謝謝。

+0

您是否在網站或雲服務託管? – Jamie

+0

Azure,雲服務 – user1352798

回答

2

有你需要爲了使這項工作做了幾件事情:

  1. 配置一個CNAME您abc.com域名指向yourapplication,xxx.abc.com .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. 如果你也想建立一個重定向重定向從abc.com/yyyxxx.abc.com您需要設置一個URL Rewrite,並將操作類型設置爲重定向as explained here)。
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返回到您想要的任何路徑。

相關問題