[英]How to access different sites in wamp configured for multiple sites using ip
我正在使用wamp在本地开发并且我已经配置了环境来处理多个站点,但是我想使用ip地址访问特定站点,我不知道是否必须在127.0.0.0之后添加端口。 0.1.
以下是我的主机设置。
127.0.0.1 localhost
127.0.0.1 www.site1.net
127.0.0.1 www.site3.com
并在虚拟主机上。
<VirtualHost *:80>
ServerAdmin www.site1.net
DocumentRoot "c:/wamp/site1/"
ServerName www.site1.net
ServerAlias www.site1.net
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin www.site2.com
DocumentRoot "c:/wamp/site2/"
ServerName www.site2.com
ServerAlias www.site2.com
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>
问题
当我在地址栏中输入 127.0.0.1 时,它会转到 site1,但我不知道如何使用 ip 访问 site2。
为什么我想要这个。 因为当我尝试从同一网络上的另一台设备访问这些站点时,它们不起作用,除非我使用这个 ip:172.20.10.4,这个在 iphone 上,这个 ip 转到 localhost,它是 site1 然后我不能访问站点2。
但是只有 www.site.net 或 www.site2.com 才能在运行 wamp 的机器上运行。
编辑。 这是尝试过的。
我把一些端口放在 httpd.conf 的“监听”部分;
Listen *:80
Listen *:8182
Listen *:8383
并更改了 htttpd-vhosts;
<VirtualHost *:80>
ServerAdmin localhost
DocumentRoot "c:/wamp/"
ServerName localhost
ServerAlias localhost
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>
<VirtualHost *:8181>
ServerAdmin www.site1.net
DocumentRoot "c:/wamp/site1/"
ServerName www.site1.net
ServerAlias www.site1.net
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>
<VirtualHost *:8182>
ServerAdmin www.site2.com
DocumentRoot "c:/wamp/site2/"
ServerName www.site2.com
ServerAlias www.site2.com
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost>
这适用于设备,例如在 iphone 上,我可以拨打 172.20.10.4:8181,然后转到站点 1,而 8182 转到站点 2。
新问题
网站的 url 现在搞砸了,我只能通过他们的端口的 ip 访问这个网站,而不是他们的域名,所以在本地机器上 127.0.0.1:8181 转到站点 1 但 www.site1.net 没有找到此站点所在的服务器目录。
好的
如果您使用 IP 地址(来自网络上的另一台 PC)而不是像www.site2.com
这样的 url,Apache 将不知道它应该运行哪个站点,因此它总是选择它在 VHost 定义文件中找到的第一个站点并获取连接那里。
因此,如果您想从内部网络上的其他 PC 访问您的站点,您要么必须运行自己的 DNS 服务器(有点复杂),要么在其他每台 PC 上都需要设置其 HOSTS 文件以了解您的 2 个站点,即
假设您的 WAMPSevrer 在 192.168.1.10 上运行,您其他 PC 上的主机文件
192.168.1.10 www.site1.net
192.168.1.10 www.site2.com
现在这些其他 PC 可以使用正确的 URL,即www.site1.net
或www.site2.com
,Apache 服务器将知道将连接发送到哪个站点。
现在我想你提到了一个电话。 这有点复杂,因为您无法在手机上访问 HOSTS 文件(如果您已越狱,则可能可以)
所以为此我使用了一些解决方法。
我使用 Fiddler,它是一个工具,用于从运行浏览器的 PC 上查看浏览器和服务器之间的线路。 但是您也可以将其用作代理我认为这是文档
基本上,您将其设置为侦听端口 8888 上的连接,然后在其现有脚本中添加一行,以告诉它在 8888 上看到连接时转到特定 url,因此您可以在手机中使用一个 url,例如192.168.1.10:8888
到 site1.net 然后更改脚本,使其转到 site2.com
它有点令人费解,但对我有用。
回答第二个问题
您没有提及您使用的是什么版本的 WampServer 或 Apache,因此我在新行中添加了对该版本的测试。
您在虚拟主机的定义中犯了一些错误。 请参阅下面的更正
<VirtualHost *:80>
ServerAdmin me@mysite.net
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
<Directory "D:/wamp/www">
AllowOverride All
<IfDefine APACHE24>
Require local
Require ip 192.168.2 <- change to your subnet first 3 quartiles
</IfDefine>
<IfDefine !APACHE24>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 localhost ::1
Allow from 192.168.2 <- ditto
</IfDefine>
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin me@site1.net
DocumentRoot "c:/wamp/www/site1"
ServerName www.site1.net
ServerAlias site1.net
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
<Directory "D:/wamp/www/site1">
AllowOverride All
<IfDefine APACHE24>
Require local
Require ip 192.168.2 <- change to your subnet first 3 quartiles
</IfDefine>
<IfDefine !APACHE24>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 localhost ::1
Allow from 192.168.2 <- ditto
</IfDefine>
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin me@site2.com
DocumentRoot "c:/wamp/www/site2"
ServerName www.site2.com
ServerAlias site2.com
ErrorLog "logs/dummy-host.example.com-error.log"
CustomLog "logs/dummy-host.example.com-access.log" common
<Directory "D:/wamp/www/site2">
AllowOverride All
<IfDefine APACHE24>
Require local
Require ip 192.168.2 <- change to your subnet first 3 quartiles
</IfDefine>
<IfDefine !APACHE24>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 localhost ::1
Allow from 192.168.2 <- ditto
</IfDefine>
</Directory>
</VirtualHost>
基本上你需要告诉每个 apache 哪些 IP 可以访问每个 vhosts 文件夹。 因此,如果您愿意,您可以保留修改后的端口,但保留<Directory>...</Directory
部分。
还要检查你的 HOST 文件,当你写你的问题时,这可能是一个错字,但你说你的主机文件看起来像这样
127.0.0.1 localhost
127.0.0.1 www.site1.net
127.0.0.1 www.site3.com
应该是这样的:
127.0.0.1 localhost
127.0.0.1 www.site1.net
127.0.0.1 www.site2.com
这会很复杂,请不要使用相同的服务器IP地址或相同的服务器名称..每台计算机都有唯一的IP,因此请提供正确的IP并且不要复制您的项目的站点名称..如果您有192.168.1.1 site1.come 那么你应该为 site2.com 使用 192.168.1.100.. 127.0.0.1 只代表 1 个服务器 ip 和 1 个站点名称......请注意这些差异,因为在一个地址中调用两个人可能会导致一个和你期望的有 2 simultinously..谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.