我有一个安装了lampp的云服务器。我在这里配置了一个虚拟主机:
<VirtualHost xx.xxx.xx.xxx:80>
DocumentRoot "/opt/lampp/htdocs/folder/"
ServerName www.xxx.com
</VirtualHost>
一切都按照我的预期工作,如果我去www.xxx.com,我会看到我的文件夹&#39;站点。
现在我需要工作到同一服务器上的另一个站点,但它还没有域名,所以我想象(通过阅读apache的配置文件说明)我必须在这样:
<VirtualHost xx.xxx.xx.xxx:80>
DocumentRoot "/opt/lampp/htdocs/folder/"
ServerName www.xxx.com
</VirtualHost>
<VirtualHost xx.xxx.xx.xxx:80/test>
DocumentRoot "/opt/lampp/htdocs/test/"
</VirtualHost>
但它不起作用,如果我http://xx.xxx.xx.xxx:80我到达&#39;文件夹&#39;网站,如果我做http://xx.xxx.xx.xxx:80/test而不是达到测试&#39;网站我仍然到达www.xxx.com,为什么?我怎么能达到这个目标呢?
答案 0 :(得分:1)
首先定义的虚拟主机(最顶层)充当默认主机。该文件用于响应请求中特定主机名未匹配的任何传入请求。
您想尝试此设置:
# some fallback host for testing and development
<VirtualHost xx.xxx.xx.xxx:80>
DocumentRoot "/opt/lampp/htdocs/_default"
</VirtualHost>
# a virtual host with a specific host name
<VirtualHost xx.xxx.xx.xxx:80>
DocumentRoot "/opt/lampp/htdocs/example.com"
ServerName example.com
ServerAlias www.example.com
</VirtualHost>
(此处xx.xxx.xx.xxx
代表系统公共和可路由的IPV4地址)
在您的文件系统中,您拥有以下层次结构:
/opt/lampp/htdocs/
_default/
test1/
test2/
example.com/
这样,http://example.com
或http://www.example.com
的请求就会映射到文件夹/opt/lampp/htdocs/example.com
,请求任何其他主机名的网址到默认文件夹{{ 1}}您现在可以为不同的应用程序创建任意数量的子文件夹。
另一种方法是使用现有域名下面的其他主机名进行内部测试,例如/opt/lampp/htdocs/_default
或类似名称。这样,您就不必使用原始IP地址及其路由风险。