当ip来自共享主机时,如何使用gethostbyaddr获取Url?

时间:2014-01-14 12:36:31

标签: php

Gethostbyname给我一个een网站的ip地址,当我在浏览器中使用它时,我去了那个网站。 如果我对共享主机上的网站尝试相同的事情我得到appachi正常工作。

当我使用带有gethosbyaddr的ip时,我的问题出现了,它给了我一个网址。为什么我在浏览器中使用ip地址时没有得到网站,但当我将其转换回来时,我得到一个网址,我得到了正确的网站。他怎么知道在共享主机上给我的URL是什么。 ip地址没有301重定向。

2 个答案:

答案 0 :(得分:1)

Apache使用虚拟主机,在共享主机服务器上有许多网站可以解析为相同的IP地址,然后虚拟主机根据URL决定显示哪个网站。

例如:

www.example1.com解析为1.2.3.4 - 当在地址栏中输入时,1.2.3.4看到该请求是针对www.example1.com并显示来自/var/www/vhosts/example1.com的文件/的httpdocs

www.example2.com解析为1.2.3.4 - 当在地址栏中输入时,1.2.3.4看到该请求是针对www.example2.com并显示来自/var/www/vhosts/example2.com的文件/的httpdocs

1.2.3.4解析为1.2.3.4 - 当在地址栏中输入时,1.2.3.4看到请求是针对1.2.3.4但是在虚拟主机中没有记录,因此它显示了'Apache正在工作'默认页面。

答案 1 :(得分:1)

共享主机在同一IP地址上托管多个不同的域。他们区分这些域的方式是使用Host HTTP标头。即当访问这样的站点时,浏览器显式地在HTTP请求本身中发送它正在寻找的域。这就是为什么当你只访问IP时它不起作用的原因。

因此,将这样的域转换为IP地址是微不足道的。反过来基本上是不可能的,因为有很多域。你会得到答案是一种幸运抽奖。