我想为我的一些客户创建一项服务,这将允许他们在我创建的MVC3网站上拥有自己的网页。使用MVC3路由子域名
我想一个企业要能够有一个网址,看起来像www.BusinessName.mydomain.com
是否有可能创造MVC3内的路线,让我做到这一点?
感谢您的帮助
好了,所以我想我已经进一步得到了一点。
理想情况下,我希望能够在IIS中的子域具有通配符,但从我做的研究看来,这是不可能的。
我手动添加www.mycompany.mydomain.com到IIS并更新了global.ascx包含此
public class SubDomainRoute : RouteBase
{
public override RouteData GetRouteData(HttpContextBase httpContext)
{
var url = httpContext.Request.Headers["HOST"];
var subDomain = Helpers.Helpers.GetSubDomain(url);
if (subDomain==null)
return null;
var routeData = new RouteData(this, new MvcRouteHandler());
switch (subDomain)
{
case "mycompany":
routeData.Values.Add("controller", "SubDomain");
routeData.Values.Add("action", "Index");
break;
default:
routeData.Values.Add("controller", "Home");
routeData.Values.Add("action", "Index");
break;
}
return routeData;
}
public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
{
return null;
}
}
所以,现在我可以浏览www.mycompanyname.mydomain.com和正确的控制器加载。
我现在有2个问题。
如果我浏览到www.mistake.mydomain.com,我得到一个502错误。如果www.mistake.mydomain.com找不到,我可以在IIS中做什么以重定向到www.mydomain.com?
一旦我浏览了www.mycompanyname.mydomain.com,我的主菜单中的所有链接现在都指向例如www.mycompanyname.mydomain.com/contactus这是错误的,我如何确保菜单项不使用url中的子域名?
感谢Vnuk。我确实有一些其他网站在同一个盒子上运行。否则,你的建议是有道理的 –