我希望 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”)。可以想象,您的问题可能就出在这里,但如果不知道您输入的具体内容,就无法重现该行为。