无法将域内的子 URL / 页面添加到 /etc/hosts 文件

无法将域内的子 URL / 页面添加到 /etc/hosts 文件

我希望 hosts 文件屏蔽 www.url.com/page,但不屏蔽 www.url.com

步骤 1
//////////////
我已添加127.0.0.1 www.apple.com到我的 /etc/host文件

当我这样做时,ping www.apple.com我得到了期望的结果:

64 bytes from localhost (127.0.0.1):

当我尝试在浏览器中访问 www.apple.com 时,它给出了所需的错误,并且我无法访问网站 www.apple.com

所以我的浏览器缓存没有问题。

步骤 2
/////////////////////
接下来我/itunes/在上面添加了一行,这使得127.0.0.1 www.apple.com/itunes/

当我这样做时ping www.apple.com/itunes/,我得到了期望的结果

64 bytes from localhost (127.0.0.1):

但是!!!!当我www.apple.com/itunes在浏览器中输入时,我可以连接到苹果的 iTunes 网站,这是意料之外的。 当我在浏览器中127.0.0.1 www.apple.com/itunes/输入时,写入我的 /etc/hosts 文件应该会将我发送到 127.0.0.1www.apple.com/itunes/

结论
///////////////// /etc/hosts 文件忽略了 /itunes/ 或 /ipod/ 等子网址,但对于 www.apple.com 等域名却完全没问题

为什么会127.0.0.1 www.apple.com/itunes/导致期望的结果和127.0.0.1 www.apple.com不会导致期望的结果?

不要告诉我浏览器缓存因为127.0.0.1 www.apple.com导致了期望的结果。

更新 此后我发现,使用 hosts 文件执行我所尝试的操作是不可能的。

/etc/hosts 文件只能重定向域,而不能重定向域内的页面。

答案解决了。谢谢。

答案1

Host 文件顾名思义,是 HOST,而不是 URL。所以 apple.com/itunes 没有任何意义。它不是主机。

答案2

你问了一个不可能的问题。

您断言正确答案是错误的,并且我们无法告诉您这一点。

此外,您对“ping”的理解有限 - 您无法 ping URL,只能 ping IP 地址或域名。它之所以能起作用,是因为它正在执行某种截断。

为了了解您的断言到底有多大依据,您需要了解网页请求的工作原理。

当 URL 输入浏览器时,浏览器会将其分解成多个部分,提取域名。然后它将域名解析为 IP 地址。(这就是使用 hosts 文件的地方)。

此后,浏览器连接到 IP 地址,并使用 URL 的其余部分发出“GET”命令(如果使用 HTTPS,则会在加密会话中执行此操作)。[FWIW 它还向 Web 服务器指定它使用的域名,以便文件服务器可以在 1 个 IP 上支持多个域名]

因此问题肯定出在浏览器本身。

就您在 hosts 文件中输入的内容而言,您的帖子也显得有些矛盾。

您无法正确输入您调用的 URL(或“子 URL”)。可以想象,您的问题可能就出在这里,但如果不知道您输入的具体内容,就无法重现该行为。

相关内容