2017-04-10 103 views
0

我有一台安装了lampp的云服务器。我曾在这里配置了虚拟主机这样的:访问具有虚拟主机的服务器apache

<VirtualHost xx.xxx.xx.xxx:80> 
    DocumentRoot "/opt/lampp/htdocs/folder/" 
    ServerName www.xxx.com 
</VirtualHost> 

和一切工作,因为我想到,如果我去www.xxx.com我看到我的“文件夹”的网站。
现在我需要工作到同一台服务器上的另一个站点,但它并没有一个域,所以我想(通过阅读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我到了“文件夹”网站,而如果我做http://xx.xxx.xx.xxx:80/test而在到达“测试”的网站,我仍然达到www.xxx.com,为什么呢?我怎么能达到这个目标?

回答

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,请求URL为任何其他主机名称为默认文件夹/opt/lampp/htdocs/_default,您现在可以在其中为不同的应用程序创建任意数量的子文件夹。

另一种方法是在现有域名下面使用其他主机名进行内部测试,所以类似test1.example.com或类似名称。这样您就不必使用原始IP地址来承担路由风险。

+0

完美而准确的答案,一切正常 – mautrok