我想将 abc.com/yyy 重定向到 xxx.abc.com,我可以知道如何在域管理器中实现这一点吗?
实际上这是一个托管在 Azure 中的 .net MVC 项目,我可以知道这是在域管理器中完成还是?
谢谢。
为了完成这项工作,您需要做一些事情:
这也可以通过 global.asax 以编程方式完成。我用它来重定向
至
这是执行此操作的代码。
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
到您想要的任何路径。