我尝试使我的项目"公开",以便我的局域网中的每个人都可以访问它。 目前,我只能通过http://localhost/project
或其虚拟主机名访问我的项目,例如http://myVirtualHostName
.
我需要项目在我的整个局域网中都可以访问,例如这样:
http://192.168.1.123/project
或http://192.168.1.123/myVirtualHostName
.
但是,如果我尝试从自己的客户端或 LAN 中的另一台计算机访问项目,我会403 Forbidden: You don't have permission to access /projectName/ on this server.
.
编辑: 我能够解决第一个问题,由于这个答案,我现在可以通过更改以下块来访问C:wamp64www
下的链接C:wamp64binapacheapche2.4.33confextrahttpd-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:wamp64www
访问一个项目http:\192.168.1.123myProjekt
.但我仍然不知道如何使用我的服务器 IP 地址访问虚拟主机。
如果我尝试http://192.168.1.123/myVhostName
那么我会得到Not Found
The requested URL /myVhostName was not found on this server.
,即使为每个virtual host
设置了Require all granted
。
我还重新启动了DNS服务器。
我该如何解决这个问题?
我正在使用 WAMP 3.1.3。
好的,首先,由于您似乎不了解虚拟主机是什么以及它的用途,我将从一点解释开始。
虚拟主机是一种让一个Apache为多个站点提供服务的方法,就好像您有多个Apache一样。正确配置后,Apache 会查看传入连接的域名,并尝试将其与 VH 定义匹配。如果可以,它从该 VH 中定义的DocumentRoot
为站点提供服务。
如果它不能与域名匹配,它将提供定义文件中的第一个 VH。这就是为什么您将第一个定义设为localhost
并始终将访问权限设置为Require local
的另一个原因,这将告诉客户端如果他们只使用您的 WAMPSevrer的 IP 地址而不是有效的域名,您将无法访问。
从WAMPServer V3开始,甚至localhost
也被定义为虚拟主机。
因此,首先保持 VH 定义localhost
原样,就像这样,但要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
从使用该 DNS 服务器的任何 PC 轻松访问它
如果您想要更高的安全性,您可能还希望使
Require
更具体,因此,如果站点仅在一个子网上运行,请将Require all granted
修改为
Require ip 10.30.20
请注意,我只使用了 IPV4 地址的前 3 个四分位数,这将授予对该段中任何客户端 IP 的访问权限。
如有任何问题,请发表评论,我会尽快回复您。
我刚刚将行:文档根从:
c:/wamp64/www
自:
c:/wamp64/www/myproject
它对我有用!