访问具有virtualhost

时间:2017-04-10 14:06:27

标签: apache lampp

我有一个安装了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,为什么?我怎么能达到这个目标呢?

1 个答案:

答案 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.comhttp://www.example.com的请求就会映射到文件夹/opt/lampp/htdocs/example.com,请求任何其他主机名的网址到默认文件夹{{ 1}}您现在可以为不同的应用程序创建任意数量的子文件夹。

另一种方法是使用现有域名下面的其他主机名进行内部测试,例如/opt/lampp/htdocs/_default或类似名称。这样,您就不必使用原始IP地址及其路由风险。