将子域添加到localhost URL

时间:2013-09-25 22:58:20

标签: http url web

我正在编写一个Web应用程序,其行为会有所不同,具体取决于url前缀。格式如下:

   https://myprefix.mycompany.com

基于myprefix,网络应用的行为有所不同。我的网络应用程序从URL中提取该部分并对其进行操作。

但是,当我在本地测试时,我使用的是本地主机地址:

   https://localhost:1234

我不会做类似的事情:

   https://myprefix.localhost:1234

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

非常感谢

5 个答案:

答案 0 :(得分:97)

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

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

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

答案 1 :(得分:27)

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

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

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

<强> UPD

sub.localhost:port适用于Chrome。 Firefox会自动添加www。在输入域的开头,可能会导致子域测试问题

答案 2 :(得分:1)

用于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-附加到文件(重要!)
  • 的末尾

答案 3 :(得分:1)

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

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

没有SOA记录,它不能是具有子记录的区域顶点,因此不允许子域或委托。甚至最近的标题为“让localhost成为localhost”的RFC草案也与此一致。

答案 4 :(得分:0)

对于Windows用户,基于this答案和每个this注释,您可以通过以下路径来实现:通过位于此路径的 hosts 文件将端口添加到localhost:

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

并向其添加以下内容:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com