我正在使用wamp进行本地开发,并且我已经配置了环境以处理多个站点,但是我想使用IP地址访问特定站点,我不知道是否必须在添加IP地址后添加端口127.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进入了本地主机,即站点1,然后我无法访问site2。
但是只有www.site.net或www.site2.com可以在运行wamp的机器上工作。
编辑。这是尝试过的。
我在httpd.confi的'listen'部分上放置了一些端口;
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上查看浏览器和服务器之间的往来情况。但您也可以将其用作代理I think this is the documentation
[基本上,您将其设置为侦听端口8888上的连接,然后在其现有脚本中添加一行,以告诉它在看到8888上的连接时转至特定的网址,因此可以在像192.168.1.10:8888
这样的电话进入site1.net,然后更改脚本,使其转到site2.com
有点混乱,但对我有用。
回答第二个问题
您没有提到正在使用的WampServer或Apache版本,所以我在新行中添加了对该版本的测试。
您在定义虚拟主机时犯了一些错误。请参见下面的更正
<VirtualHost *:80>
ServerAdmin [email protected]
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 [email protected]
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 [email protected]
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,并且不要重复使用您的项目的站点名称。 1.1 for site1.come,则应将192.168.1.100用于site2.com。127.0.0.1仅代表1个服务器ip和1个站点名..请注意这些区别,因为在一个地址中呼叫两个人可能会导致一个您期望有2个。.谢谢!