可能重复:
public override RouteData GetRouteData(HttpContextBase httpContext)
{
var url = httpContext.Request.Headers["HOST"];
var index = url.IndexOf(".");
if (index < 0)
return null;
var subDomain = url.Substring(0, index);
if (subDomain != "www" && subDomain != "m")
{
var routeData = new RouteData(this, new MvcRouteHandler());
routeData.Values.Add("controller", "Business");
routeData.Values.Add("action", "Display");
routeData.Values.Add("id", subDomain);
return routeData;
}
if (subDomain == "m")
{
var routeData = new RouteData(this, new MvcRouteHandler());
routeData.Values.Add("controller", "Mobile");
routeData.Values.Add("action", "Index");
return routeData;
}
return null;
}我的问题是,当我访问xyz.mydomain.com时,它总是被重新路由到xyz.mydomain.com/Business/Display/xyz。这使我无法进入xyz.mydomain.com/Overview,因为它正在拾取子域并重定向。
我尝试过使用if语句来确定是否指定了控制器,但似乎没有任何东西工作。有什么建议吗?
发布于 2012-05-16 23:55:56
万一其他人需要答案这是我的解决方案..。
如果您只需要一个控制器,那么substrings.Length >= 3是一个操作,所以改为2:
public override RouteData GetRouteData(HttpContextBase httpContext)
{
var host = httpContext.Request.Headers["HOST"];
var url = httpContext.Request.RawUrl;
Regex regex = new Regex("/");
string[] substrings = regex.Split(url);
if (substrings.Length >= 3)
{
return null;
}
var index = host.IndexOf(".");
if (index < 0)
{
return null;
}
var subDomain = host.Substring(0, index);
if (subDomain != "www" && subDomain != "m")
{
var routeData = new RouteData(this, new MvcRouteHandler());
routeData.Values.Add("controller", "Business"); //Goes to the User1Controller class
routeData.Values.Add("action", "Display"); //Goes to the Index action on the User1Controller
routeData.Values.Add("id", subDomain);
return routeData;
}
if (subDomain == "m")
{
var routeData = new RouteData(this, new MvcRouteHandler());
routeData.Values.Add("controller", "Mobile"); //Goes to the User2Controller class
routeData.Values.Add("action", "Index"); //Goes to the Index action on the User2Controller
return routeData;
}
return null;
}https://stackoverflow.com/questions/10617397
复制相似问题