use*_*776 19 web-hosting ip-address http php virtual-host
我有几个问题,请帮忙:
拳头,我只需要输入 就可以访问 Google 搜索http://74.125.224.211,因为这是 nslookup 返回的 IP 地址。
但是,我无法使用从 www.yahoo.com 返回的 IP 地址执行此操作。如何通过 IP 进入 Yahoo 搜索页面?
另一个例子,http://www.allaboutcircuits.com将解析到68.233.243.63DNS 服务器,但如果我去http://68.233.243.63,我得到“Hello world!”。
其次,出于某种原因,我的网络托管服务的 DNS 解析器有问题(不会修复!!)。所以命令像
get_file_contents("http://www.allaboutcircuits.com");
Run Code Online (Sandbox Code Playgroud)
将返回 php_network_getaddresses: getaddrinfo failed: Name or service not known
我如何通过 IP 地址解决这个问题,
68.233.243.63
Run Code Online (Sandbox Code Playgroud)
我的意思是,以某种方式将 HTTP 主机名参数附加到get_file_contents()?
我想自己解决这个问题(在我的代码中),服务器管理员不会进行故障排除/调整。
Gra*_*ant 17
在您的 PHP 脚本中,当您通过 IP 地址访问它时,您还需要Host:在您的请求中使用正确的域名发送标头。
Stack Overflow 上的这个问题解释了如何做:https : //stackoverflow.com/questions/356705/how-to-send-a-header-using-a-http-request-through-a-curl-call
小智 10
正如wallyk所说,它是虚拟服务器
以 apache 为例
<VirtualHost *:80>
ServerName example2.com
DocumentRoot C:/www/example2.com
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
DocumentRoot C:/www/example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
在 c:\www\example.com 中创建一个索引文件,上面写着“Hello World!example.com”
在 c:\www\example2.com 中创建一个索引文件,上面写着“Hellow World!example2.com”
并将您的主机文件更改为
127.0.0.1 example.com
127.0.0.1 example2.com
Run Code Online (Sandbox Code Playgroud)
然后去http://example.com 然后去http://example2.com
这就是每个 IP 可以拥有多个站点的方法
所以基本上答案是,不,您将无法从 ip 获取该站点。
您说您想手动指定主机名和 IP 地址,而不是依赖您无法控制的 DNS 服务器。查看file_get_contents 文档中的评论,我看到那里的评论者通过创建包含所需 Host: 标头的上下文解决了类似的问题。像这样的东西:
$context = stream_context_create(array('http' => array('header' => 'Host: www.allaboutcircuits.com')));
$data = file_get_contents('http://68.233.243.63/', 0, $context);
Run Code Online (Sandbox Code Playgroud)
当然,请注意手动指定主机名和 IP 地址的缺点是,如果将来 IP 地址发生变化(例如,如果站点移至新的托管服务提供商),您的代码可能会停止工作,直到您手动更新 IP 地址。