![使用 Windows Hosts 文件将外部 URL 重定向到子域?](https://linux22.com/image/687239/%E4%BD%BF%E7%94%A8%20Windows%20Hosts%20%E6%96%87%E4%BB%B6%E5%B0%86%E5%A4%96%E9%83%A8%20URL%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%AD%90%E5%9F%9F%EF%BC%9F.png)
我将直接发布这个问题,如果社区认为它需要详细说明或澄清,我就会对其进行编辑。
问题
今天我想到了一个我认为绝妙的主意。我经常在 Amazon.com 购物。亚马逊提供一项计划,您购买的所有商品中的一部分将捐给您选择的慈善机构“Amazon Smile”。您可以选择通过访问“smile.amazon.com”(amazon.com 的子域)来“激活”该慈善机构。我想使用 Windows 10 hosts 文件,每当我输入“amazon.com”时自动重定向到“smile.amazon.com”,这样我的慈善机构就会一直受益。不幸的是,它并没有像我希望的那样发挥作用。
我尝试过的
首先,我以管理员身份打开 Notepad.exe。然后,我从记事本中打开 hosts 文件(路径:)
C:\Windows\System32\drivers\etc\hosts
并尝试了以下所有方法,但均无济于事:
直接 url 转换
smile.amazon.com amazon.com
使用 CMD 执行 ping 操作以获取 smile.amazon.com 的 URL(54.239.26.123)
54.239.26.123 amazon.com
还添加了 www 子域名路由
54.239.26.123 amazon.com 54.239.26.123 www.amazon.com
这些似乎都没起作用(当我输入 _amazon.com_ 时,URL 栏中的地址并没有变为“smile.amazon.com”),但是出现了证书错误,我试了4个浏览器,包括Firefox、Chrome、SeaMonkey、IceDragon,(清除了所有浏览器的缓存),都没有用。
根据此服务器故障帖子中,我尝试过这个:
ipconfig /flushdns
ping smile.amazon.com Pinging smile.amazon.com [54.239.26.123] with 32 bytes of data: Request timed out.
C:\WINDOWS\system32>nbtstat -R Successful purge and preload of the NBT Remote Cache Name Table.
证书/安全错误
进行上述更改后,我收到此错误:
铬合金:
你的连接不是私人的
攻击者可能试图从 www.amazon.com 窃取您的信息(例如密码、消息或信用卡)。NET::ERR_CERT_COMMON_NAME_INVALID
如果我单击“高级”,我将获得以下信息:
此服务器无法证明它是 www.amazon.com;其安全证书来自 smile.amazon.com。这可能是由于配置错误或攻击者拦截了您的连接所致。
当我单击继续访问 amazon 时,浏览器会将我带到 amazon.com,然后我会在 URL 中看到以下内容:
(https[crossed-out])://www.amazon.com
我的问题
所以,我想了解的是:
- 是否可以通过 Windows hosts 文件将 amazon.com 重定向到 smile.amazon.com?
- 我该怎么做?
答案1
DNS 解析和 HTTP 重定向是完全不同的事情,这种方法是错误的。毒害您的本地 DNS 解析以强制将“amazon.com”解析为假的“smile.amazon.com”IP 只会导致服务器端出现 SSL 证书、HTTP 会话和跨站点请求拒绝问题:
首先,SSL 证书。amazon.com 和 smile.amazon.com 使用子域特定证书提供服务,因此如果 URL 请求与证书名称不匹配,浏览器会向用户显示错误。因此,如果您向支持“smile.amazon.com”的服务器请求“amazon.com”资源,即使在执行 HTTP 请求之前,您的浏览器也会因证书名称不匹配而向您发出警告。当然,您可以忽略这一点,但支持应用程序逻辑的 javascript 可能不会在跨域请求的情况下出现,从而使网络完全无用。
其次,如果您以任何方式绕过 SSL 问题,您的浏览器将向 smile.amazon.com 发送请求,询问 amazon.com 内容,这将导致服务器端启动各种安全机制来拒绝此类跨站点请求。
最后,预计服务器端会话管理、身份验证、cookie 验证等会出现各种问题。
答案2
我正在寻找一种解决方案来将 URL 重定向到另一个 URL,然后找到了这个帖子。我认为其他人可能会觉得我的发现很有用,即使它不是您问题的直接答案,但它仍然是问题的解决方案。
我建议你尝试使用类似这样的插件,而不是在 Windows 中编辑 hosts 文件重定向器对于 Firefox 或Chrome 重定向器。
它非常有效,可以阻止我在不想要的时候浏览某些网站,例如为了提高工作效率,或者强迫自己使用新服务。可以想象使用重定向器停止使用 hotmail.com 并使用另一项自定义服务,例如,无需改变任何其他习惯。
答案3
如果你是 Chrome 用户,这也许能帮助你解决问题:
永远微笑是一款 Chrome 扩展程序,可自动将您重定向至smile.amazon.com。
答案4
NBTSTAT 是一个 NetBIOS 工具,与 DNS 无关。
如果您希望 amazon.com 通过主机文件解析为 smile.amazon.com 的 IP 地址,那么在添加主机文件条目后,您需要 ping amazon.com,而不是 smile.amazon.com。您的目标是将 amazon.com 解析为 smile.amazon.com 的 IP 地址,因此您应该在测试中使用名称 amazon.com,以确保它解析为 smile.amazon.com 的 IP 地址。
如果您使用 smile.amazon.com 的 ip 地址在 hosts 文件中为 amazon.com 添加条目,并且 ping amazon.com 返回 smile.amazon.com 的 ip 地址,则表示 hosts 文件正在运行。如果您的浏览器仍将您定向到 amazon.com,则这与您的 hosts 文件无关。