例子:
配置两个虚拟主机,这两个虚拟主机
一个域名(name)为a1.com,存放web应用程序的文件名为webapps1
另一个域名(name)为a2.com,存放web应用程序的文件名为webapps2
webapps的a文件夹下的html文件代码
webapps1的a文件夹下的html文件代码
webapps2的a文件夹下的html文件代码
此时如果通过域名访问各个存放web应用程序的文件下的a文件夹下的html文件,那么应该会有不同的html文件打开
1、访问本机下的a文件夹的html文件
2、访问域名a1.com的a文件夹的html文件
3、访问域名a2.com的a文件夹的html文件
首先解决问题我们需要知道问题的出处在哪,这里默认存放web程序的文件夹webapps的访问是没有问题的,那么为什么使用域名访问就会出问题呢?
就是当浏览器通过域名去访问文件时
1、先访问hosts文件,如果这个域名通过hosts文件发现我们的域名有映射IP那么就直接向这个IP的8888端口发送数据包(假设我给的是8888端口),
2、然后Connector在监听的8888端口发送来了请求再将这个请求发送给Engine
3、Engine再在Host虚拟主机中寻找是否有这个虚拟主机的name(域名)
4、如果找到了通过这个虚拟主机的默认appBase寻找我要访问的文件
5、如果没有找到,那么就把这个请求给localHost,让localHost处理这个请求
但是如果在第一步的时候,就没有发现这个域名有映射的IP,那浏览器就不知道向哪个IP的主机发送请求,也不会在本机发送请求,所以就不可能访问成功
所以我们需要配置hosts文件,可能有人还不知道hosts文件是什么?
hosts文件是C:\Windows\System32\drivers\etc文件夹下的文件,通过编译器打开hosts文件过后我们就可以对域名和IP进行映射了
当我们把这个映射写好之后就可以通过域名访问文件了
访问域名a1.com的a文件夹的html文件
访问域名a2.com的a文件夹的html文件