Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 将子域添加到本地主机URL_Http_Url_Web - Fatal编程技术网

Http 将子域添加到本地主机URL

Http 将子域添加到本地主机URL,http,url,web,Http,Url,Web,我正在编写一个web应用程序,其行为因url前缀而异。格式类似于: https://myprefix.mycompany.com https://myprefix.localhost:1234 web应用程序的行为因myprefix而异。我的web应用程序从URL中提取该部分并执行该操作 但是,当我在本地服务器上测试时,我使用本地主机地址: https://localhost:1234 我不能做这样的事情: https://myprefix.mycompany.co

我正在编写一个web应用程序,其行为因url前缀而异。格式类似于:

   https://myprefix.mycompany.com
   https://myprefix.localhost:1234
web应用程序的行为因myprefix而异。我的web应用程序从URL中提取该部分并执行该操作

但是,当我在本地服务器上测试时,我使用本地主机地址:

   https://localhost:1234
我不能做这样的事情:

   https://myprefix.mycompany.com
   https://myprefix.localhost:1234
我测试这个场景的最佳方法是什么


非常感谢

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

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

您的计算机现在将把
example.com
subdomain.example.com
视为属于自己。如果您在web浏览器中访问其中一个,它们的工作原理与本地主机相同,但您的web服务器将在其主机头中看到正确的域。

我不确定windows上是否有相同的行为。我在linux mint上工作

您可以使用
lvh.me:port
作为本地域。您可以想象您的项目部署在这个域的
localhost:port

您必须使用
sub.lvh.me:port

更新

sub.localhost:port
在Chrome上工作


注意:Firefox会自动添加www。根据答案和每条注释,在输入域的开头添加www,这可能会导致Windows用户的子域测试出现问题,您可以通过位于以下路径的主机文件向localhost添加端口来实现这一点:

C:\Windows\System32\drivers\etc\hosts
并在其上附加以下行:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com
适用于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
    -域名
  • |输出文件C:\Windows\System32\drivers\etc\hosts
    -将字符串通过管道传输到
    主机
  • -编码ASCII
    -正确编码
  • -追加
    -追加到文件末尾(重要!)

    • 您应该使用
      .test
      域进行类似的操作。这就是
      .test
      的作用
      localhost
      不应该有任何子域

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


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

      非常感谢您的回答。这正是我想要的。然而,我的web应用程序运行在一个端口上,比如说1234。我四处搜索,人们说没有办法在/etc/hosts中指定端口号。指定端口的最佳方式是什么?您必须像往常一样在URL中使用端口,例如,
      http://subdomain.example.com:1234/whatever
      。端口与域完全分离(域用于标识计算机,端口用于标识计算机上要与之通信的程序)。或者,如果您可以以root用户身份运行软件(用于测试),您可以只使用端口80,这是默认值,因此,您不必指定域名。只需在ip地址后列出域名:
      127.0.0.1 example.com sub.example.com sub2.example.com…
      这也适用于windows。windows上的主机文件位于:
      C:\windows\System32\drivers\etc\hosts
      。您需要将文件复制到权限较低的其他地方(如桌面),对其进行编辑,然后将其粘贴回文件夹(以解决权限问题)。以下是此问题的解决方案,我可以确认此方法也适用于Windows。Internet Explorer、Edge、Firefox和Chrome浏览器完美无瑕!我用的是firefox和chrome,谢谢!为了增加灵活性,您还可以使用服务nio.io或xip.io。它们允许将任何IP地址映射到任何子域。例如,你的同事也可以使用相同的URL访问你的应用程序。例如,如果工作站的IP地址为
      172.16.0.42
      ,则可以使用
      https://myprefix.myapp.172.16.0.42.nip.io:1234
      从您的电脑或内部网中的其他电脑。