我不知道标题中的问题是否足够明确。
假设您有2个或N个域指向同一个IP地址,您的服务器(在我的情况下是带有IIS的Windows Server),并且您希望为每个域名制作自定义站点,因此您必须检测哪个域是用户目前正在使用。
应该有两个“自定义网站”。一个是管理应用程序站点,只有一个域名指向它,另一个是处理多个域名的应用程序,并基于它显示不同的站点。
很好的例子是shoutem网络。在http://www.shoutem.com/是管理页面,而应用程序实例是http://zrikka.com/和http://punkt.com.hr,用于处理不同域名的单独应用程序。
有可能吗?
答案 0 :(得分:3)
您想要完成的内容不是在ASP.Net内部处理,而是在IIS级别处理。您可以指定IIS中每个“站点”应处理的域。通常,您将拥有一个处理所有解析为IP的域的域,但是如果所有域都绑定到完全不同的docroots(即不同的应用程序/站点文件),则可以将多个站点绑定到IP。关键是您不必在应用程序代码中担心这一点。
答案 1 :(得分:2)
在HTTP协议级别,这是使用Host:
标头完成的。例如,对根页面的简单GET请求可能如下所示:
GET / HTTP/1.1
Host: example.com
在这种情况下,Host:
标头告诉服务器浏览器转到网站example.com
并正在寻找该网站的根页(/
)。另一个请求可能是:
GET / HTTP/1.1
Host: example.org
如果同一服务器同时处理example.com
和example.org
,则HTTP服务器可以通过这种方式区分请求。
在您的情况下,IIS是接收这些标头并将请求定向到相应站点的组件。
答案 2 :(得分:1)
如果您希望单个应用程序处理同一IP上的不同域,则应检查您的请求上下文,例如:
string host = HttpContext.Current.Request.Url.Host;
switch (host.ToLower())
{
case "domain1.com":
// do something
break;
case "domain2.com":
// do something
break;
default: //unknown domain
// do something
break;
}
知道您可以处理哪些主机地址,请检查它。
如果您想将不同的域指向同一IP和IIS上的不同网站,则应配置IIS,在这种情况下请查看Tim的答案。
答案 3 :(得分:0)
这将为您提供您网站的域名:
HttpContext.Current.Request.Url.Authority
或者用更合适的内容替换.Authority
。