如何通过IP访问配置了多个站点的WAMP中的不同站点
如何通过IP访问配置了多个站点的WAMP中的不同站点
我正在使用wamp进行本地开发,并且已经配置了环境以处理多个站点,但我想使用IP地址访问特定的站点,我不知道在127.0.0.1之后是否需要添加端口号。
以下是我的主机设置。
127.0.0.1 localhost 127.0.0.1 www.site1.net 127.0.0.1 www.site3.com
还有虚拟主机设置。
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
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
问题
当我在地址栏中输入127.0.0.1时,它转到site1,我不知道如何使用IP访问site2。
为什么我想这样做。
因为当我尝试从同一网络中的另一台设备访问这些站点时,除非我使用此IP:172.20.10.4,否则它们无法工作,这是在iPhone上,这个IP指向localhost,即site1,然后我无法访问site2。
但是在运行wamp的计算机上,只有www.site.net或www.site2.com可以正常工作。
编辑。这是我尝试过的。
我在httpd.confi的“listen”部分添加了一些端口;
Listen *:80
Listen *:8182
Listen *:8383
并更改了htttpd-vhosts;
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
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
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
这对设备有效,比如在iPhone上,我可以拨号172.20.10.4:8181,它会转到site1,而8182会转到site2。
新问题
现在站点的URL混乱了,我只能通过带有端口的IP访问这些站点,而不能通过它们的域名访问,所以在本地机器上,127.0.0.1:8181转到site1,但www.site1.net找不到这个站点所在的服务器目录。
如何通过使用ip访问wamp配置的多个站点中的不同站点
在使用ip地址(来自网络上的另一台计算机)而不是像www.site2.com这样的url时,Apache将不知道应该运行哪个站点,因此它总是选择在VHost定义文件中找到的第一个站点,并将连接发送到那里。
因此,如果您想要从内部网络上的其他计算机访问您的站点,则需要运行自己的DNS服务器(有点复杂),或者在每台其他计算机上设置它们的HOSTS文件以了解您的2个站点,如下所示。
在其他PC上的HOSTS文件上假设您的WAMP服务器运行在192.168.1.10上
192.168.1.10 www.site1.net
192.168.1.10 www.site2.com
现在这些其他PC可以使用正确的网址,即www.site1.net或www.site2.com,Apache服务器将知道将连接发送到哪个站点。
现在我想你提到了一个手机。这有点复杂,因为您无法在手机上访问HOSTS文件(如果您已经越狱,可能可以)。
所以对于这个问题,我使用了一个解决方法。
我使用Fiddler,它是一个查看浏览器和服务器之间传输的工具,但也可以将其用作代理。
基本上,您将其设置为在某个端口(比如8888)上监听连接,然后在其现有脚本中添加一行,告诉它在看到8888上的连接时转到特定的url,因此您可以在手机上使用像192.168.1.10:8888这样的url来访问site1.net,然后更改脚本,使其转到site2.com。
这有点复杂,但对我有用。
第二个问题的答案
您没有提到您使用的WampServer或Apache的版本,所以我在新行中添加了一个版本的测试。
您在虚拟主机定义中犯了一些错误。以下是更正。
ServerAdmin me.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
AllowOverride All
Require local
Require ip 192.168.2 <- 更改为您的子网前3个四分位
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 localhost ::1
Allow from 192.168.2 <- 同上
ServerAdmin me.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
AllowOverride All
Require local
Require ip 192.168.2 <- 更改为您的子网前3个四分位
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 localhost ::1
Allow from 192.168.2 <- 同上
ServerAdmin me.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
AllowOverride All
Require local
Require ip 192.168.2 <- 更改为您的子网前3个四分位
Order Deny,Allow
Deny from all
Allow from 127.0.0.1 localhost ::1
Allow from 192.168.2 <- 同上
基本上,您需要告诉每个Apache哪些IP可以访问每个虚拟主机的文件夹。
因此,如果您愿意,您可以保留修改后的端口,但保留
还要检查您的HOSTS文件,您在提问时可能是一个打字错误,但您已经说您的hosts文件如下所示
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
不错,我也注意到它选择了第一个,所以我将我想要测试的一个移到列表的顶部,哈哈,还有一个当我想要它时的另一个,多么烦人,但请看我对一些东西的修改,但是又出现了一个新问题。