好的,我知道如何使用“主机”文件重定向普通页面,但它不适用于某些页面,例如 http://rustledjimmies.com/ 或者 http://heyyeyaaeyaaaeyaeyaa.com/
例如,我想将 youtube.com 重定向到 rustledjimmies.com/。但在我按照通常的重定向方法操作后,它就是不起作用。
有什么想法可以解释为什么以及如何解决它吗?
这是我放入“hosts”文件的一个例子。
104.36.80.4 fb.com
该 IP 地址属于网站 rustledjimmies.com,但不知何故,当我将其写入“主机”时,它会显示一个不同的网站。
205.186.179.191 Facebook
这个是针对 heyyeyaaeyaaaeyaeyaa.com 的,但它根本没有响应(至少对我来说)
答案1
对于某些网站它不起作用。
对于小型网站来说,每台服务器(或每个 IP 地址)托管一个网站并不是一个好主意。在一个 IP 地址上托管多个网站是可能的,此功能称为虚拟主机。
但是服务器必须以某种方式检查您愿意打开哪个站点。HTTP 协议规范定义了一个Host
标头(自 HTTP 1.1 以来是强制性的),其中包含您的浏览器正在请求的网站地址。服务器使用此标头来选择适当的虚拟主机。
以下是对 YouTube 的正常请求:
- 在地址栏中输入
http://youtube.com
并按Enter - 您的计算机查询 DNS 服务器以将
youtube.com
域名解析为 IP 地址。- DNS 服务器的响应:
46.28.247.104
- DNS 服务器的响应:
浏览器发送 HTTP 请求至
46.28.247.104
:GET / HTTP/1.1 Host: youtube.com
- 服务器
46.28.247.104
识别youtube.com
为其虚拟主机并为您提供服务。
- 服务器
现在我们假设您已经映射youtube.com
到192.168.0.100
使用该hosts
文件。
- 在地址栏中输入
http://youtube.com
并按Enter youtube.com
的 IP 在文件中提供hosts
,因此不需要 DNS 查找。- 系统告诉浏览器该
youtube.com
地址是192.168.0.100
- 系统告诉浏览器该
浏览器发送 HTTP 请求至
192.168.0.100
:GET / HTTP/1.1 Host: youtube.com
- 服务器
192.168.0.100
无法识别youtube.com
其虚拟主机,因此它以404
错误代码响应。
- 服务器