我正在编写一个Web应用程序,其行为会有所不同,具体取决于url前缀。格式如下:
https://myprefix.mycompany.com
基于myprefix,网络应用的行为有所不同。我的网络应用程序从URL中提取该部分并对其进行操作。
但是,当我在本地测试时,我使用的是本地主机地址:
https://localhost:1234
我不会做类似的事情:
https://myprefix.localhost:1234
测试这种情况的最佳方式是什么?
非常感谢
答案 0 :(得分:97)
不幸的是,由于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服务器将在其主机标头中看到正确的域。
答案 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)
以管理员的身份打开 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)