![]() |
为已经创建的服务器添加新的虚拟主机
Set host = httpd.AddHost(hostName, RootPath)
新创建的 HttpServer 对象不包含主机信息,为了能够理解和正确处理客户的请求,必须为对象添加新的主机信息。
在添加新的虚拟主机时,hostName 用于指定虚拟主机的主机名,比如,如果希望建立一个虚拟主机 www.zydsoft.com,则可是使用下面的代码:
httpd.AddHost "www.zydsoft.com", ...
服务器在进行主机匹配的时候是通用匹配的,所以上面的代码建立了一个所有的 *.www.zydsoft.com 和 www.zydsoft.com 都能够匹配的虚拟主机。而如果希望建立一个 www.zydsoft.com 和 web.zydsoft.com 等所有的 *.zydsoft.com 都可以匹配的虚拟主机,则可以使用下面的代码:
httpd.AddHost "zydsoft.com", ...
可以在一个服务器上创建多个新的虚拟主机,服务器将按照最符合的主机进行匹配,服务器对虚拟主机的匹配顺序与主机的添加顺序没有关系,只与主机的匹配程度有关。比如下面例子建立了两个虚拟主机:
httpd.AddHost "zydsoft.com", ... httpd.AddHost "www.zydsoft.com", ...
如果客户请求了 my.www.zydsoft.com,两个主机都是可以匹配的,在这种情况下,服务器将匹配最接近的主机,即 www.zydsoft.com。
也可以使用空字符串作为 hostName 使用,此时则创建了一个完全通配的虚拟主机,即如果服务器搜索了全部主机信息,没找到合适的主机进行匹配,则自动使用此主机。比如下面的例子:
httpd.AddHost "zydsoft.com", ... httpd.AddHost "www.zydsoft.com", ... httpd.AddHost "", ...
如果客户请求 www.intel.com,则在前面两个主机中都不能匹配,服务器便会使用最后一个虚拟主机进行匹配。
AddHost 方法将返回一个 HttpServerHost 对象,可以使用此对象进行进一步的设定。同时 AddHost 方法会将此对象存放在 httpd.Contents 集合中,可以使用 httpd(hostName) 取得。下面代码中 host 与 host1 是同一个主机对象:
Set host = httpd.AddHost("zydsoft.com", ...) Set host1 = httpd("zydsoft.com")
下面的例子创建一个新的 HttpServer 对象,在 80 端口建立一个服务器,然后添加一个虚拟主机:
Set httpd = CreateObject("NetBox.HttpServer") httpd.Create "", 80 Set host = httpd.AddHost("", "\wwwroot")