我尝试让我的项目“公开”,因此我的局域网中的每个人都可以访问它。
目前,我只能通过http://localhost/project
或其虚拟主机名访问我的项目,例如http://myVirtualHostName
。
我需要在整个局域网中访问项目,例如像这样:
http://192.168.1.123/project
或http://192.168.1.123/myVirtualHostName
。
但是如果我尝试从我自己的客户端或局域网中的另一台计算机访问项目,我会得到403 Forbidden: You don't have permission to access /projectName/ on this server.
。
修改:
通过更改C:\wamp64\www
C:\wamp64\bin\apache\apche2.4.33\conf\extra\httpd-vhosts.conf
下的链接了
来自
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
</Directory>
</VirtualHost>
到
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
...并在之后重新启动apache。
现在,我可以像C:\wamp64\www
一样访问http:\\192.168.1.123\myProjekt
中的项目。但我仍然不知道如何使用我的服务器IP地址访问虚拟主机。
如果我尝试http://192.168.1.123/myVhostName
,那么即使为每个Not Found
The requested URL /myVhostName was not found on this server.
设置Require all granted
,我也会获得virtual host
。
我也重新启动了DNS服务器。
我该如何解决这个问题?
我正在使用WAMP 3.1.3。
答案 0 :(得分:3)
好的,首先,因为您似乎无法理解虚拟主机是什么以及它用于什么,我将从一点点解释开始。
虚拟主机是让一个Apache为多个站点提供服务的一种方式,就好像你有多个Apache一样。正确配置后,Apache会查看传入连接的域名,并尝试将其与VH定义相匹配。如果它可以从该VH中定义的DocumentRoot
提供该站点。
如果它与域名不匹配,它将为定义文件中的第一个VH提供服务。这就是为什么你做出localhost
的第一个定义的另一个原因,并始终设置对Require local
的访问权限,这将告诉客户如果他们只是使用你的WAMPSevrer&而你没有访问 #39;的IP地址,而不是有效的域名。
从WAMPServer V3起,甚至localhost
被定义为虚拟主机。
首先保留localhost
VH定义,就像这样,但使用Require local
因为你永远不想允许使用上面的工具远程访问WAMPServer主页,因为它不会运行正确地从远程客户端,因为大多数工具假设localhost
从客户端运行时不会存在,因为它总是假设在this PC
即客户端。
<VirtualHost *:80>
ServerName localhost
ServerAlias localhost
DocumentRoot "${INSTALL_DIR}/www"
<Directory "${INSTALL_DIR}/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
现在将您的真实网站定义为另一个VH。我将假设它将被称为example.local
但是将其更改为无论您希望网站真正被调用的地方。
<VirtualHost *:80>
ServerName example.local
ServerAlias www.example.local
DocumentRoot "${INSTALL_DIR}/www/example"
<Directory "${INSTALL_DIR}/www/example/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
注意:
DocumentRoot
文件夹甚至不必位于${INSTALL_DIR}/www/
,它可能位于该磁盘上的任何位置,甚至完全位于另一个驱动器上。
现在您还说您有一个现场DNS服务器。因此,让管理员定义example.local
并将其指向运行WAMPServer的PC的IP地址。这应该可以通过使用域名example.local
或www.example.local
如果您想要更高的安全性,您可能还希望
Require
更具体,因此如果该站点仅在一个子网上运行,请将Require all granted
修改为
Require ip 10.30.20
注意,我只使用了IPV4地址的前3个四分位数,它将授予对该段中任何客户端IP的访问权。
如有任何问题,请发表评论,我会尽快回复你。
答案 1 :(得分:0)
我刚刚将line:DocumentRoot更改为:
c:/wamp64/www
至:
c:/wamp64/www/myproject
对我有用!