因为是虚拟主机。
主机上放置了N个网站,而每个网站绑定1个或以上域名,所以用域名访问主机可以解析到网站目录,但用IP的话服务器就不知道解析到哪个目录了。
如果就想用ip形式访问,可以手动设置Host头域信息。
java中以org.apache.http.client.methods.HttpGet实现http请求为例,解决方法HttpGet httpGet = new HttpGet(url);
httpGet.setHeader(“Host”, ServerHostname);
1、直接使用ip地址访问不了站点的原因
原因就在于该ip地址可能对应着多个web站点,单单依靠ip地址是不知道如何匹配到哪个web站点的。但是通过域名,我们就能够知道具体要访问哪一个HOST。如果使用虚拟主机,直接找到相关virtual HOST即可,如果使用反向代理,那么通过代理找到HOST的实际私网地址也可以。
2、只有一个公网ip如何实现多个WEB站点的访问
有两种办法可以实现,其一是虚拟主机,其二就是反向代理。通过目前来看,虚拟主机的实现方式已然不多,更多的企业或者学校使用的是反向代理技术。
通过域名可以访问,IP地址不行出现这个情况可以能由一下几种情况引起的:
1、自己搭建的服务器,采用动态IP解析服务。由于网络环境复杂或者多线路引起的IP地址解析失败。
2、电脑或者服务器的INPut:80口被封。或者被其他软件占用。域名采用默认80口解析生效。
3、IP解析中遇到位置因素。域名解析可以通过多线路实现。
优缺点:IP解析速度快。但是生效慢,网络复杂容易出现解析失败。域名解析速度慢但是稳定!
一个IP地址可以绑定多个域名,
如果每个IP地址都可以直接访问网站的话,
那这么多的域名,它到底访问哪个好呢?
所以IP地址有的可以访问,有的不能直接访问,
能访问的那个IP,就是服务器的IP指向了一个网站文件目录.
而不能访问的那个IP,它没有指向服务器里的任何目录.
因为一个IP可以绑定多个网站域名
而域名是唯一的
只是你的不行,我的可以,刚才试过了,比如百度:
ping www.baidu.com
得出结果是220.181.18.155
在IE中输入http://220.181.18.155与输入www.baidu.com完全一样.