135

我正在编写一个 Web 应用程序,它的行为取决于 url 前缀。格式类似于:

   https://myprefix.mycompany.com

Web 应用程序的行为基于 myprefix 有所不同。我的网络应用程序从 URL 中提取该部分并采取行动。

但是,当我在本地测试时,我使用 localhost 地址:

   https://localhost:1234

我不能做类似的事情:

   https://myprefix.localhost:1234

我测试这种情况的最佳方法是什么?

非常感谢

4

7 回答 7

190

不幸的是,因为localhost不是一个合适的域,你不能像那样添加一个子域。但是,您可以欺骗您的计算机,使其认为它拥有一个特定的域并以这种方式进行测试。例如,如果您有一个基于 UNIX 的操作系统,请打开(以 root 身份)该文件/etc/hosts并添加一行(或多行),如下所示:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

您的计算机现在将两者都example.com视为subdomain.example.com属于自己。如果您在 Web 浏览器中访问任何一个,原则上它们的工作方式与 相同,localhost但您的 Web 服务器将在其 Host 标头中看到正确的域。

于 2013-09-25T23:02:54.640 回答
46

我不确定 Windows 上的相同行为。我正在研究 linux mint。

您可以lvh.me:port用作本地域。您可以想象您的项目部署localhost:port在此域上。

而不是sub.localhost:port你必须使用sub.lvh.me:port

更新

sub.localhost:port适用于 Chrome。

注意:Firefox 会自动添加 www。在输入域的开头,这可能会导致子域测试出现问题

于 2016-02-01T06:49:30.133 回答
9

对于 Windows 用户,基于答案和评论,您可以通过驻留在此路径的主机文件将端口添加到 localhost 来实现此目的:

C:\Windows\System32\drivers\etc\hosts

并将如下行添加到它:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com
于 2019-07-07T10:31:21.423 回答
6

您应该将.test域用于此类事情。这就是.test目的。 localhost不应该有任何子域。

这样做违反了批准的 RFC 标准。 localhost具有 A 记录,在 IPv6 环境中具有 AAAA 记录。禁止所有其他 DNS 记录类型,包括 SOA。

如果没有 SOA 记录,它就不能是具有子记录的区域顶点,因此不允许子域或委托。甚至最近题为 Let localhost be localhost 的 RFC 草案也与此一致。

于 2020-08-21T01:45:39.050 回答
2

适用于 Windows 的一站式解决方案

管理员身份打开PowerShell并运行以下命令,替换为您想要的任何内容。sub.mydomain.com

"`n127.0.0.1    sub.mydomain.com" | Out-File C:\Windows\System32\drivers\etc\hosts -encoding ASCII -append

分解:

  • `n- 新队
  • 127.0.0.1- 环回地址
  • sub.mydomain.com- 域名
  • | Out-File C:\Windows\System32\drivers\etc\hosts- 将字符串连接到hosts
  • -encoding ASCII- 正确的编码
  • -append- 附加到文件末尾(重要!)
于 2020-03-26T14:26:37.073 回答
1
https://myprefix.mycompany.localhost:1234

这应该可以解决问题。因为localhost是顶级域,所以它的行为类似于.com生产代码。

于 2022-01-05T19:38:03.510 回答
0

来自 Windows 中的 WSL

  • 首先导航到/mnt/c/Windows/System32/drivers/etc(导航原因,你可能会发现更多有趣的文件。不要在这里玩,但看看他们做了什么)
  • 然后做nano hosts(在最底部添加)
    127.0.0.1    random.com
    127.0.0.1    auth.random.com
    
    
于 2022-01-12T10:30:19.793 回答