我在虚拟机上使用 WAMP 设置了一个网站。该虚拟机位于具有内部域 123.net 的网络上。在 DNS 中,我已配置 CNAME(site.123.net)以指向虚拟机。但是,当我尝试 site.123.net 时,我收到 403 Forbidden 错误(这是一个 wamp 错误,因此它击中了 wamp)下一步该如何配置它,以便当我输入 site.123.net 时,它会直接转到网站?
谢谢!
答案1
如果你只想在内部访问主机,你只需使用一个hosts
文件。用 Notepad++
打开C:\Windows\System32\Drivers\etc\hosts
文件,并添加一个新行:
1.2.3.4 123.net
因此,IP 位于首位,然后是空格/制表符和您想要的域名。就是这样。保存后,它就可以正常工作了。
如果我没有 Notepad++ 怎么办?
将 hosts 文件复制到桌面或任何其他正常位置。进行编辑,然后将其复制回来。这是必需的,因为该文件是系统文件,因此您必须是管理员才能更改它,但记事本默认不会以管理员身份启动。
如果我使用 Linux/BSD 会怎样?
只需将相同格式的条目添加到/etc/hosts
如果它是子域名怎么办?
1.2.3.4 subdomain.123.net
答案2
我收到
403 Forbidden
错误(这是 WAMP 错误,因此它击中了 WAMP)。下一步该如何配置它,以便当我输入时site.123.net
,它会直接进入网站?
WAMP 适用于本地开发。如果您想从另一台计算机(即使在您的本地网络上)访问 WAMP,您可能需要编辑 Apache 的设置。
要寻找的关键指令是要求指令,用于控制对虚拟主机(您的网站)的访问。例如,在 WAMP 中,对于默认虚拟主机,您可能有类似以下内容localhost
:
例如 httpd-vhost.conf
#
# Virtual Hosts
#
<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>
在 WAMP 3.2.0 中,此文件通常位于例如下c:/wamp64/bin/apache/apache2.4.41/conf/extra/httpd-vhost.conf
。
在这种情况下,Require local
意味着只有本地计算机(127.0.0.1
,::1
或)才被允许连接到端口 80 上的localhost
主机。localhost
改变此设置以允许任何计算机连接到该虚拟主机,你可以使用Require all granted
:
例如 httpd-vhost.conf ( Require all granted
)
#
# Virtual Hosts
#
<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>
但这不是唯一的选择。例如,Require
也可以采用部分 IP:
# Limit host access to client IPs starting with 192.168.1.x
Require 192.168.1
上面已经给出的链接和mod_authz_host 的官方 Apache 文档还有其他Require
您可能觉得有用的例子。
您应该彻底检查 Apache 配置中的Require
指令。除了 ex.httpd-vhost.conf
和任何虚拟主机(例如example.com
和)之外, ex. 下的123.example.com
Apache文件是另一个需要查看的重要配置文件,因为它控制服务器的全局设置。httpd.conf
c:/wamp64/bin/apache/apache2.4.41/conf/httpd.conf
如果上述建议不起作用,您可能需要对虚拟主机进行更多更改,甚至可能需要重新考虑 DNS 方法。子域名通常不是 CNAME。