2010-09-08 96 views
2

我不知道标题中的问题是否足够清楚。如何检测您网站的域名?

比方说,你有2个或N个域名指向同一个IP地址,你的服务器(在我的情况下是带有IIS的Windows服务器),并且你想为每个域名制作自定义站点,所以你必须检测哪个域是正在使用的用户。

应该有两个“自定义网站”。一个是管理应用程序站点,只有一个域名指向它,另一个是处理多个域名的应用程序,并基于它显示不同的站点。

很好的例子是shoutem网络。在http://www.shoutem.com/是管理页面,应用程序实例是http://zrikka.com/http://punkt.com.hr,处理不同域名的单独应用程序。

可能吗?

+0

我不承认。你想知道如何配置iis以拥有多个子域名吗?或者这个编程有关? – mcabral 2010-09-08 23:41:01

+0

你检查了答案吗? – 2010-09-17 05:31:41

回答

3

你想完成的事情不是在ASP.Net内部处理的,而是在IIS级别。您可以指定IIS中每个“站点”应处理的域。通常情况下,您将拥有一个处理解析为IP的所有域,但是您可以将多个绑定到IP的站点都设置为完全不同的文档根(即不同的应用程序/站点文件)。关键是你不应该在你的应用程序代码中担心这一点。

Here's the MSDN docs on how to do it in IIS6

2

在HTTP协议级别,这是使用Host:标头完成的。例如,对于一个根页面简单的GET请求可能类似于:

GET/HTTP/1.1 
Host: example.com 

在这种情况下,Host:头告诉浏览器亲临现场example.com,并正在寻找根页面服务器(/)从该网站。另一个要求可能是:

GET/HTTP/1.1 
Host: example.org 

如果在同一台服务器同时处理example.comexample.org,则HTTP服务器可以通过这种方式请求区分。

在你的情况,IIS是组件接收这些头并引导请求到适当的部位。

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的答案。

0

这会给你的网站的域名:

HttpContext.Current.Request.Url.Authority 

或者有更合适的东西取代.Authority